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