我要发帖 回复

中级会员

27

主题

124

积分

0

专家分

:

私信
发表时间 : 2009-6-22 11:06:23 | 浏览 : 2053    评论 : 5
每一个顶点都对应了一个纹理坐标,采用顶点数组来绘制,结果物体是可以绘制出来,但是纹理却没能绘制出来,不知道是什么原因?
   谢谢!

最近VR访客

tan_dunming 评论于2009-6-22 14:32:37
可能的原因太多 问题描述的太宽泛 没有丝毫线索 抱歉
追求卓越
yaojianfu 评论于2009-6-22 15:53:29
原来绘制纹理的代码是这样的:
glBegin(GL_TRIANGLES);//绘制一个面(三角形)

glTexCoord2fv(tem_object->Tex_UV[*(temp_faceindex+0)]);
glVertex3fv(tem_object->pointarray_stack[*(temp_faceindex+0)]);
                                                       
glTexCoord2fv(tem_object->Tex_UV[*(temp_faceindex+1)]);
glVertex3fv(tem_object->pointarray_stack[*(temp_faceindex+1)]);

glTexCoord2fv(tem_object->Tex_UV[*(temp_faceindex+2)]);
glVertex3fv(tem_object->pointarray_stack[*(temp_faceindex+2)]);

glEnd();

现在改成下面的样子:
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3,GL_FLOAT,0,tem_object->pointarray_stack);

glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2,GL_FLOAT,0,tem_object->Tex_UV);

glDrawElements(GL_TRIANGLES,3,GL_UNSIGNED_INT,temp_faceindex);

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
我不太清楚是不是只需要一句glDrawElements(GL_TRIANGLES,3,GL_UNSIGNED_INT,temp_faceindex);就可以把纹理也绘制出来?
tan_dunming 评论于2009-6-22 18:49:32
应该是 还需要看你的数据是否合适 纹理数据加载进来没有 结合之前的那个帖子自己多试一试吧 一个功能一个功能的调试吧 因为毕竟你的程序和例子中也有较多不同之处
http://www.52vr.com/bbs/viewt ... 1012&extra=page%3D1

[ 本帖最后由 tan_dunming 于 2009-6-22 06:51 PM 编辑 ]
追求卓越
yaojianfu 评论于2009-6-23 11:34:24
有一事不明:
    上面的代码中pointarray_stack是在栈中开辟的空间,也就是说用了一个数组存储顶点坐标,这样可以将网格绘制出来.
    而Tex_UV是一块动态开辟的堆中空间,也就是说,每一个点的纹理坐标是放在一块动态开辟的空间中,这样纹理没有绘制出来,
    但是,当我把纹理坐标存放在了Tex_UV_stack中时,纹理却可以正确绘制出来,Tex_UV_stack是一个数组,是一块栈中的空间.
   不知道这是什么原因?
   谢谢!
tan_dunming 评论于2009-6-23 13:37:37
声明称全局变量试一下呢?
要么就上传代码吧 有时候是很难说清楚
追求卓越

手机版|VR开发网 ( 津ICP备18009691号 ) 统计 网安备12019202000257

GMT+8, 2020-10-2 05:43 AM

返回顶部