游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1952|回复: 2

使用顶点缓冲区对象绘制不出来?

[复制链接]

11

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2008-5-9 22:26:00 | 显示全部楼层 |阅读模式
// 创建顶点缓冲区部分代码
glGenBuffersARB(1, &m_uiVBOVertexID);        // 分配VBO顶点坐标对象标识
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_uiVBOVertexID);                // 绑定VBO对象标识
glBufferDataARB(GL_ARRAY_BUFFER_ARB, iAllocationSize, m_vecVertexArray, GL_DYNAMIC_DRAW_ARB);        //将数据存入VBO对象中

glGenBuffersARB(1, &m_uiVBONormalID);        // 分配VBO顶点法线对象标识
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_uiVBONormalID);                // 绑定VBO对象标识
glBufferDataARB(GL_ARRAY_BUFFER_ARB, iAllocationSize, m_vecNormalArray, GL_DYNAMIC_DRAW_ARB);        // 将数据存入VBO对象中

glGenBuffersARB(1, &m_uiVBOIndexID);        // 分配VBO顶点法线对象标识
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_uiVBOIndexID);                // 绑定VBO对象标识
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iAllocationSize, m_usVertexIndexArray, GL_STATIC_DRAW_ARB);        // 将数据存入VBO对象中

// 绘制部分代码
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_uiVBOVertexID);        // 绑定顶点坐标数组VBO对象标识
glVertexPointer(3, GL_FLOAT, 0, m_vecVertexArray);
glEnableClientState(GL_VERTEX_ARRAY);        // 启动顶点坐标数组

glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_uiVBONormalID);        // 绑定顶点法线数组VBO对象标识
glNormalPointer(GL_FLOAT, 0, m_vecNormalArray);
glEnableClientState(GL_NORMAL_ARRAY);        // 启动顶点法线数组

glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_uiVBOIndexID);        // 绑定顶点索引数组VBO对象标识
glDrawElements(GL_TRIANGLES, WaterMeshIndexNumber, GL_UNSIGNED_SHORT, m_usVertexIndexArray);


请问为什么绘制不出来?谢谢!

10

主题

173

帖子

178

积分

注册会员

Rank: 2

积分
178
发表于 2008-5-10 00:19:00 | 显示全部楼层

Re:使用顶点缓冲区对象绘制不出来?

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_uiVBOVertexID);
glVertexPointer(3, GL_FLOAT, sizeof(float)*3, 0);//对应顶点的定义,这里假设是float x,y,z;
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_uiVBONormalID);
glNormalPointer(GL_FLOAT, sizeof(float)*3, 0);//对应法线的定义,这里假设是float x,y,z;
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_uiVBOIndexID);
glDrawElements(GL_TRIANGLES, WaterMeshIndexNumber, GL_UNSIGNED_SHORT, 0);


对于glVertexPointer,glNormalPointer,glDrawElements函数可能理解错误,使用的参数不正确。

11

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2008-5-12 01:15:00 | 显示全部楼层

Re:使用顶点缓冲区对象绘制不出来?

解决了,谢谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 12:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表