2011-06-04 89 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