游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1907|回复: 1

新人提问~~关于OpenGL里使用多个缓冲区对象的问题

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-2-11 11:41:00 | 显示全部楼层 |阅读模式
RT~~~本人定义了两个缓冲区对象,并想将他们分别渲染出来。在OpenGL里要怎么实现呢?

写入数据时:
for (int i = 0;i < nmeshes;i++)
{
Lib3dsMesh *mesh = f3ds->meshes;
...;//由3ds文件中读取出需要数据
glGenBuffers(1,&m_Vertex);
glGenBuffers(1,&m_Index);
glBindBuffer(GL_ARRAY_BUFFER,m_Vertex);
glBufferData(GL_ARRAY_BUFFER,(sizeof(float) * 9 * mesh->nfaces) + (sizeof(float) * 3 * mesh->nvertices),TotleV,GL_STATIC_DRAW);
glVertexPointer(3,GL_FLOAT,0,BUFFER_OFFSET(0));
glNormalPointer(GL_FLOAT,0,BUFFER_OFFSET(V_size));

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_Index);
glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(unsigned short) * 3 * mesh->nfaces,tempIndex,GL_STATIC_DRAW);
DrawCount = mesh->nfaces * 3;
}


渲染时:

glBindBuffer(GL_ARRAY_BUFFER,m_Vertex[0]);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_Index[0]);
glDrawElements(GL_TRIANGLES,DrawCount[0],GL_UNSIGNED_SHORT,NULL);

glBindBuffer(GL_ARRAY_BUFFER,m_Vertex[1]);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_Index[1]);
glDrawElements(GL_TRIANGLES,DrawCount[1],GL_UNSIGNED_SHORT,NULL);

这样渲染得话,渲染出来的图形会出错……

OpenGL能像D3D那样能对不同的缓冲区对象进行渲染吗?

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2009-2-11 12:13:00 | 显示全部楼层

Re:新人提问~~关于OpenGL里使用多个缓冲区对象的问题

搞定了~~~原来还要把glVertexPointer之流的指向重设一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 08:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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