gpt4 book ai didi

c++ - 未找到 glActiveTexture ARB

转载 作者:搜寻专家 更新时间:2023-10-31 00:03:23 25 4
gpt4 key购买 nike

大家好,我在这里遇到了一个错误,似乎 C++ 没有找到 glActiveTextureARB(GL_TEXTURE0_ARB);我使用代码块并且我有 glext.h 所以每当我右键单击 glActiveTextureARB 并找到它实际上找到它的声明......我有一个 64 位系统并且我尝试将 glext.h 放入 GL 文件夹以及我的项目和我得到同样的错误任何想法都会帮助 tyvm

这是我的代码,以备不时之需。顺便说一句,它是西类牙语的,但没关系,因为错误我认为它不在代码中

#include "objetos.h"
#include "glext.h"
#include <cassert>

Objetos::Objetos()
{
m_OBJS = NULL;
}

Objetos::Objetos(OBJETO d,int txt)
{
m_OBJS = NULL;
box = 0;
triangle = 0;
circle = 0;
CTargaImage image;

image.Load("TGAs/caja1.tga");
glGenTextures(1, &m_texturaCaja[0]);
glBindTexture(GL_TEXTURE_2D, m_texturaCaja[0]);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB,
image.GetWidth(), image.GetHeight(),
GL_RGB, GL_UNSIGNED_BYTE, image.GetImage());

image.Release();


image.Load("TGAs/caja2.tga");
glGenTextures(1, &m_texturaCaja[1]);
glBindTexture(GL_TEXTURE_2D, m_texturaCaja[1]);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB,
image.GetWidth(), image.GetHeight(),
GL_RGB, GL_UNSIGNED_BYTE, image.GetImage());

image.Release();

switch(d)
{
case TRIANGULO:
//borrarlo antes de dibujarlo siempre;
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, m_texturaTriangulo[txt]);
glEnable(GL_TEXTURE_2D);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE);
m_OBJS = glmReadOBJ("materiales/triangulo.obj");
m_Posicion.x = 0.0f;
glDisable(GL_TEXTURE_2D);
break;

case CIRCULO:
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, m_texturaEsfera[2]);
glEnable(GL_TEXTURE_2D);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE);
m_OBJS = glmReadOBJ("materiales/circulo.obj");
m_Posicion.x = -0.43f;
glDisable(GL_TEXTURE_2D);
break;

case CAJA:
glActiveTextureARB(GL_TEXTURE2_ARB);
glBindTexture(GL_TEXTURE_2D, m_texturaCaja[1]);
glEnable(GL_TEXTURE_2D);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE);
m_OBJS = glmReadOBJ("materiales/caja.obj");
m_Posicion.x = 0.43f;
glDisable(GL_TEXTURE_2D);
break;
}
}

最佳答案

glActiveTextureARB 是一个扩展函数。因此,在 Windows 平台下,包含 glext.h 不足以使其可用。您还必须定义一个函数指针并加载它

PFNGLGETACTIVETEXTUREARB __myglextActiveTextureARB;
#define glActiveTextureARB __myglextActiveTextureARB

void initGLextensions() {
__myglextActiveTextureARB = (PFNGLGETACTIVETEXTUREARB) wglGetProcAddress("glActiveTextureARB);
}

为了保持库命名空间的清洁,宏的处理是必要的。

因为从头开始加载所有这些扩展会非常乏味,所以有扩展包装库,如 GLEW (http://glew.sourceforge.net) 或 GLEE (http://www.opengl.org/sdk/libs/GLee/),将整个过程减少到包含它们的 header 而不是标准的 OpenGL 包含,将它添加到链接库列表并为 GLEW 和 GLEE 执行 glewInit() 可选地在上下文创建后执行 GLeeInit() 并完成。

关于c++ - 未找到 glActiveTexture ARB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com