大佬教程收集整理的这篇文章主要介绍了c – OpenGL – 2D纹理映射,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用SOIL来加载图像.
static GLuint LoadpnG(char* filename) { GLuint texture = SOIL_load_OGL_texture ( filename,SOIL_LOAD_AUTO,SOIL_CREATE_NEW_ID,SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT ); if (texture == 0) Log("Texture Load Error: " + string(filename)); glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); return texture; }
这是我的渲染代码,我可能没有正确映射它,所以这也可能是问题.
// Draw Textured Quad static void glDrawTexturedQuad(glRectF rect,GLuint tex) { // Bind Texture glBindTexture (GL_TEXTURE_2D,tex); // Render Settings glEnable(GL_TEXTURE_2D); glTexEnvi( GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL); glColor3ub(255,255,255); glBegin(GL_QUADS); // Top Left glTexCoord2f(0,1); glVertex2f(rect.X,rect.Y); // Top Right glTexCoord2f(1,1); glVertex2f(rect.X + rect.Width,rect.Y); // Bottom Right glTexCoord2f(1,0); glVertex2f(rect.X + rect.Width,rect.Y + rect.Height); // Bottom Left glTexCoord2f(0,0); glVertex2f(rect.X,rect.Y + rect.Height); glEnd(); }
这是相关代码的其余部分. (这实际上只是临时代码,将它们粘合在一起进行测试,在我开始工作之后我会想出一个更好的解决方案.)
static GLuint Texture; static void LoadTextures() { Texture = LoadpnG("filename"); } static void glRendertest() { glRectF rect = {20,20,64,64}; glDrawTexturedQuad(rect,Texture); }
我将LodePNG替换为SOIL(简单的OpenGL图像库),它更容易使用,但仍然无法正常工作.
我按照下面的答案中的建议添加了glTexEnv,但我仍然只是得到一个白色的盒子,我会尝试更多的设置,但我不认为那是它. (编辑:试过各种旗帜,没有,只是一个白色四边形.)
glEnable(GL_TEXTURE_2D); glBindTexture (GL_TEXTURE_2D,texture);
之前
glTexParameterf(GL_TEXTURE_2D,GL_LINEAR); glTexParameterf(GL_TEXTURE_2D,GL_LINEAR);
以上是大佬教程为你收集整理的c – OpenGL – 2D纹理映射全部内容,希望文章能够帮你解决c – OpenGL – 2D纹理映射所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。