请教 OpenGL VBO的问题 急~~~~~~~~~~~~~~~~~~~~~

gaararay 2008-10-27 02:19:17

GLfloat fAxisVertexList[][3] =
{
0.0f,0.0f,0.0f,
30.0f * m_fModelWindowRatioX * m_fScale,0.0f,0.0f,
0.0f,50.0f * m_fModelWindowRatioX * m_fScale,0.0f,
0.0f,0.0f,70.0f * m_fModelWindowRatioX * m_fScale,
};

static GLuint unAxisIndexList[][2] =
{
0,1,
0,2,
0,3,
};

static int isFirstCall = 1;
static unsigned int unVertexBuffer; // 顶点缓存对象的名称
static unsigned int unIndexBuffer;

bool bVBOSupported = IsExtensionSupported( "GL_ARB_vertex_buffer_object" );

// 获得函数的指针
glGenBuffersARB = (PFNGLGENBUFFERSARBPROC) wglGetProcAddress("glGenBuffersARB");
glBindBufferARB = (PFNGLBINDBUFFERARBPROC) wglGetProcAddress("glBindBufferARB");
glBufferDataARB = (PFNGLBUFFERDATAARBPROC) wglGetProcAddress("glBufferDataARB");
glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) wglGetProcAddress("glDeleteBuffersARB");

if (isFirstCall)
{
isFirstCall = 0;
//分配一个缓冲区,并将顶点数据存入缓冲区
glGenBuffersARB(1,&unVertexBuffer);
glBindBufferARB(GL_ARRAY_BUFFER_ARB,unVertexBuffer);
glBufferDataARB(GL_ARRAY_BUFFER_ARB,sizeof(fAxisVertexList),fAxisVertexList,GL_STATIC_DRAW_ARB);

glGenBuffersARB(1,&unIndexBuffer);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB,unIndexBuffer);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB,sizeof(unAxisIndexList),unAxisIndexList,GL_STATIC_DRAW_ARB);
}

glBindBufferARB(GL_ARRAY_BUFFER_ARB,unVertexBuffer);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB,unIndexBuffer);

glVertexPointer(3,GL_FLOAT,0,(char *)NULL);
glDrawElements(GL_LINES,6,GL_UNSIGNED_INT,(char *)NULL);



本人菜鸟啊,基本就是照着教程copy下来的,
最后一句glDrawElements(GL_LINES,6,GL_UNSIGNED_INT,(char *)NULL); 处内存访问出错
请教一下应该怎么改??
...全文
210 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaararay 2008-10-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzz822163 的回复:]
glDrawElements之前要先使用glEnableClientState
你教程上没说?
[/Quote]

问题自己找到了。。
之前初始化的时候用了
glEnableClientState(GL_COLOR_ARRAY);
忘了关掉
zzz822163 2008-10-30
  • 打赏
  • 举报
回复
http://www.cppblog.com/w2001/archive/2008/05/10/49376.html
你看看这个
zzz822163 2008-10-30
  • 打赏
  • 举报
回复
glDrawElements之前要先使用glEnableClientState
你教程上没说?
glacier3d 2008-10-28
  • 打赏
  • 举报
回复
好像是glDrawElements(GL_LINES,6,GL_UNSIGNED_INT,(char *)unAxisIndexList);
gaararay 2008-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 glacier3d 的回复:]
好像是glDrawElements(GL_LINES,6,GL_UNSIGNED_INT,(char *)unAxisIndexList);
[/Quote]

不行的
1 课程简介:本课程详细讲解了OpenGL从入门到精通的理论+实践知识,对于每一个知识点都会带领学员通过代码来实现功能。其中涵盖了基础图元绘制,基础光照,高级过程,高级光照等内容;当前图形引擎的应用已经越来越广泛,春晚以及各大综艺节目已经开始使用XR作为主流的内容制作技术,房地产漫游及Web渲染技术已经开始茁壮发展,VR也即将突破硬件瓶颈;普遍的游戏引擎在独特的领域已经无法完全实用,且我们国家要发展自主科技技术,图形引擎以及CAD等卡脖子技术一定会蓬勃发展,所以同学们要抓住机会,趁势而上,熟悉底层,博取更大发展,学习OpenGL底层接口的应用以及图形学算法,将是您向纵深发展的第一步!2 课程解决优势:很多同学学习OpenGL最难的是找到路径,并且其中牵扯到的理论知识点无法完全理解透彻(比如VAO与VBO的区别,MVP矩阵变换的推导及原理,光照系统的设计及算法推导,帧缓存的灵活应用等),我们的课程可以带领大家从原理+实践的角度进行学习,每一个知识点都会:a 推导基础公式及原理 b 一行一行进行代码实践从而能够保证每位同学都学有所得,能够看得懂,学得会,用得上,并且能够培养自主研究的能力。学习课程所得:学习本课程完毕之后,学员可以全方位的完全了解OpenGL当中的必要接口,并且可以对图形学的基础知识融会贯通,可以制作中级的特效。并且对于UnrealEngine以及Unity3D的学习更加轻松,对于各类商业引擎当中的算法以及内容制作手法更加深刻理解把控。学员也可以自行进行图形引擎的设计以及研究,并且将本课程的知识点进行代码模块化编写;能够自主推导图形学管线以及应用当中的各类公式,并且理解其几何含义。 代码与PPT资源,已随课程附赠,请同学们对应课程下载 

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧