首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

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

2012-03-08 
新手请教opengl中二维纹理映射我在做毕业设计,我现在有了一张二维人脸三角形网格图(只是一些点和线连成的

新手请教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在前面构造纹理时使用了呢.这不是什么问题.
你这个用顶点数组更容易,但这个数据量恐怕不会有性能优势.
检查一下你的绘制代码的数据引用.也不一定是这里的错误

热点排行