大家好,我在这里有一个很大的错误,似乎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;
}
}
Run Code Online (Sandbox Code Playgroud)
glActiveTextureARB
是一个扩展功能.因此,在Windows平台下,仅包含glext.h以使其可用是不够的.您还必须定义一个函数指针并加载它
PFNGLGETACTIVETEXTUREARB __myglextActiveTextureARB;
#define glActiveTextureARB __myglextActiveTextureARB
void initGLextensions() {
__myglextActiveTextureARB = (PFNGLGETACTIVETEXTUREARB) wglGetProcAddress("glActiveTextureARB);
}
Run Code Online (Sandbox Code Playgroud)
那个宏的杂耍是保持库名称空间干净的必要条件.
因为从头开始进行所有这些扩展加载会非常繁琐,所以有扩展包装库,如GLEW(http://glew.sourceforge.net)或GLEE(http://www.opengl.org/sdk/libs/GLee/)将整个过程简化为包括标题而不是标准的OpenGL包含,将其添加到链接库列表中,并glewInit()
为GLEW和GLEE执行后跟GLeeInit()
上下文创建并完成.