专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 图形/图像

新手请问opengl中二维纹理映射

发布时间:2011-06-27 20:37:35 文章来源:www.iduyao.cn 采编人员:星星草
新手请教opengl中二维纹理映射
我在做毕业设计,我现在有了一张二维人脸三角形网格图(只是一些点和线连成的网格),我现在要给它贴上纹理,采用的方法是直接载入一张位图,然后通过位图作为纹理对每一个三角形贴上纹理,我想问的是怎么样进行纹理映射,第一次接触opengl不是很懂,请高手帮忙。 
 void CErweirenlianView::tiewenli() 

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glLoadIdentity(); glTranslatef(0.0f,0.0f,-3.0f); 
WenLiInit(); 
glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, texture[0]); 
 
glBegin(GL_TRIANGLES); 
for(int i=0;i<58;i++) //58个三角形
for(int j=0;j<3;j++) //3个顶点

glTexCoord2f((p[erwei_list[i][j]-1][0]+1)/2,(p[erwei_list[i][j]-1][1]+1)/2); 
glVertex2f(p[erwei_list[i][j]-1][0],p[erwei_list[i][j]-1][1]); 





glEnd(); 



LoadGLTexture()等省略了,是搬过来的 ,没有错
上面的三角形贴纹理的P数组保存的是(-1,1)的三角形顶点坐标,erwei_list保存的是每个三角形的3个顶点,2个数组都是2维数组,一共有34个顶点,58个面,不知道怎么就是贴不上纹理。。。估计是映射方式错了,希望高手帮我改正下。。。写出代码最好,有的话发邮箱daixiaoli_1986@163.com 在此谢过了。。。

------解决方案--------------------
看了你的代码,结合我的经验说几点
1.程序中不是对每个顶点和三角形进行纹理映射。
2.程序中缺少了glGenTexture()这个函数。
3.程序中没有把图像读进来。
具体如何操作我记不清了。但是网上这方面的代码很多,你自己上网搜索。
------解决方案--------------------
同意1楼的2.程序中缺少了glGenTexture()这个函数。
还有可能 过滤属性没设置;
另外
纹理坐标最好影射到(0,1);
------解决方案--------------------
反对,glGenTextures并不是必须的,只要glBindTexture绑定的第2个参数是未使用的有效uint类型,就可以.glGenTextures只是为避免误用一个正在使用的id而推荐的.
而且这只是一段代码,说不定LZ在前面构造纹理时使用了呢.这不是什么问题.
你这个用顶点数组更容易,但这个数据量恐怕不会有性能优势.
检查一下你的绘制代码的数据引用.也不一定是这里的错误
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: