2011-06-04 47 views
1

嗨大家ive在这里有一个相当错误,似乎C++没有找到glActiveTextureARB(GL_TEXTURE0_ARB); 即时通讯使用codeblocks,我有glext.h,所以每当我右键单击glActiveTextureARB,并找到声明,它实际上发现它......我有一个64位系统,并试图把GL文件夹中glext.h,也在我的项目和即时得到同样的错误任何想法将有助于tyvmglActiveTexture ARB没有被发现

我的继承人的情况下,代码u需要它..它是在西班牙顺便说一句,但它的Cuz的错误,我认为不事关它不是在代码

#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; 
    } 
} 
+0

显示完整的错误信息。 – 2011-06-04 23:38:35

+0

\ Objetos.cpp ||在构造函数'Objetos :: Objetos(OBJETO,int)'中:| | \ Objetos.cpp | 111 |错误:'glActiveTextureARB'未在此范围内声明 || ===构建完成:1个错误,3个警告=== | – Makenshi 2011-06-04 23:39:31

回答

6

glActiveTextureARB是一个扩展功能。因此,在Windows平台下,仅包含glext.h以使其可用。您还可以定义一个函数指针,并与

PFNGLGETACTIVETEXTUREARB __myglextActiveTextureARB; 
#define glActiveTextureARB __myglextActiveTextureARB 

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

加载它,宏观杂耍是neccesary保持库命名空间干净。

由于这将是很繁琐从头做所有这延长装载有像GLEW扩展包装器库(http://glew.sourceforge.net)或GLEE(http://www.opengl.org/sdk/libs/GLee/)降低整个过程分成包括它们的报头而不是标准的OpenGL包括的,将其添加到链接库列表并为GLEW和GLEE执行glewInit()(可选)GLeeInit()在创建上下文后执行。

+0

哇,你是一个拯救生命的家伙tyvm – Makenshi 2011-06-04 23:52:00