设置纹理后,在施加纹理之前有20fps,它是300fps
我的代码:
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()
。
第二个问题是纹理有点透明,因此它从后面的颜色中获取颜色并将其与自身混合。为什么呢?
答案 0 :(得分:3)
我在主WINAPI循环中调用LoadTEX()。
我假设这意味着你每帧调用一次,在这种情况下,这就是你性能下降的原因。您应该在循环之前加载一次纹理,然后每帧绘制一次。
第二个问题是纹理有点透明,因此它从后面的颜色中获取颜色并将其与自身混合
如果没有看到渲染纹理的代码,很难说明原因。禁用与glDisable(GL_BLEND)的混合,您的纹理将不再透明。