2011-04-12 243 views
2

嘿, 我创造了C++ 用openGL当我尝试和纹理映射到它改变了一切的颜色我画 如一切对象的游戏继续下去透明的红色或绿色..openGL的纹理映射

glEnable (GL_TEXTURE_2D); 
    Bitmap image; 
    image.loadBMP ("Texture.bmp"); 

    glGenTextures(1, &m_TextureID); 
    glBindTexture (GL_TEXTURE_2D, m_TextureID); 

    glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE , GL_MODULATE); 
    glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); 

    glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
    glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
    glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
    gluBuild2DMipmaps (GL_TEXTURE_2D, 3, image.width, image.height, GL_RGB, GL_UNSIGNED_BYTE, image.data); 
    glEnd(); 

这是我的质地代码和这里是我如何映射纹理

glBegin(GL_QUADS); 
glEnable (GL_TEXTURE_2D); 
//glColor3d(1, 0, 0); 
glTexCoord2f (0.0f,0.0f); 
glVertex3f(0, 0, 0); // bottom left 
glTexCoord2f (1.0f,0.0f); 
glVertex3f(10, 0, 0); // bottom right 
glTexCoord2f (1.0f,1.0f); 
glVertex3f(10, 0.6, 0);// top right 
glTexCoord2f (0.0f,1.0f); 
glVertex3f(0, 0.6, 0); // top left 
glEnd(); 

等等

我所有的非纹理的物体被绘制这样

glBegin(GL_QUADS);//BACK 
glColor3d(1,0,0); 
glVertex3f(10, 0, 0); 
glVertex3f(10, 0, -5.6); 
glVertex3f(10, 0.6, -5.6); 
glVertex3f(10, 0.6, 0); 
glEnd(); 

等... 我思念的东西真的很明显? 谢谢

回答

4

如果您不希望它们被纹理化,则需要禁用其他对象的纹理贴图。

glDisable(GL_TEXTURE_2D); 
glBegin(GL_QUADS); 
... 
+0

好的,谢谢我让它现在工作:) – DK10 2011-04-12 13:30:08

1

您切换这两个:

glBegin(GL_QUADS); 
glEnable (GL_TEXTURE_2D); 

glEnable不应该在glBegin()和glEnd()

其他然后,之间的调用,使用glGetError,看看究竟哪些调用失败。

+0

欢呼的帮助:)现在它的工作 – DK10 2011-04-12 13:31:02

+0

@ DK10那么,这是什么问题? – 2011-04-12 14:03:09

+0

我错过了glDisable某处:) – DK10 2011-04-14 22:07:53