0
時,低幀率設置紋理之後有aplying紋理之前20fps的是300fps的Opengl:使用紋理
我的代碼:
void LoadTEX()
{
GLuint texture;
HBITMAP GLtex;
BITMAP tex;
byte Texture=TEX;
glGenTextures(sizeof(Texture), &texture);
GLtex= (HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(Texture), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
GetObject(GLtex,sizeof(tex), &tex);
glPixelStorei(GL_UNPACK_ALIGNMENT,4);
glBindTexture(GL_TEXTURE_2D, texture);
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);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, tex.bmWidth, tex.bmHeight, GL_RGB, GL_UNSIGNED_BYTE, tex.bmBits);
DeleteObject(GLtex);
}
,你可以看到我從我的resourcs文件加載紋理。我在我的主WINAPI循環中調用LoadTEX()
。
第二個問題是紋理是有點透明的,所以它從背後的臉上取得顏色並將其與自身混合。爲什麼?
http://www.opengl.org/wiki/Common_Mistakes#gluBuild2DMipmaps < - gluBuild2DMipmaps相當陳舊 – jozxyqk
我該如何使用它?我曾嘗試過:'glBindTexture(GL_TEXTURE_2D,texture);'然後'glEnable(GL_TEXTURE_2D);'和finaly:'glGenerateMipmap(GL_TEXTURE_2D);'代碼編譯但沒有顯示窗口。 – NightKn8
glEnable(GL_TEXTURE_2D)僅用於固定管線渲染afaik,直到您需要紋理映射您的繪圖並且不使用着色器時才需要。您需要先使用glTexImage2D將紋理數據發送到OpenGL,然後調用glGenerateMipmap。確保你有一個合適的mipmapping過濾器集(也有GL_LINEAR_MIPMAP_LINEAR)。你可能也想看看各向異性過濾。 – jozxyqk