- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对 QGLBuffer 有疑问。我正在尝试使用 QT + Opengl 实现动态 VBO。
在.h文件中
struct CVert {
float x;
float y;
};
...
typedef struct CVert CVert;
CVert* m_data;
QGLBuffer* m_bufferData;
int m_size;
在 .cpp 中
构造函数。
m_size = numberOfVertex;
m_bufferData = new QGLBuffer(QGLBuffer::VertexBuffer);
m_bufferData->create();
m_bufferData->bind();
m_bufferData->setUsagePattern(QGLBuffer::DynamicDraw);
m_bufferData->allocate(2*sizeof(float)* p_size);
m_data = (CVert*)m_bufferData->map (QGLBuffer::ReadWrite);
在程序执行中我改变了一些m_data值
m_data[pos].x = X1
m_data[pos].y = y1
在绘制方法中。
glEnableClientState(GL_VERTEX_ARRAY);
if (m_bufferData->bind ()) {
glVertexPointer( 2, GL_FLOAT, 0, (char *) NULL );;
glDrawArrays( GL_LINES, 0,m_size );
glDisableClientState(GL_VERTEX_ARRAY);
}
但没有绘制它。我检查过 m_data 不为空,并且 m_bufferData->bind() 返回 true。我做错了什么?
最佳答案
我想我已经解决了。每次我必须编辑 VBO。我必须
m_data = (CVert*)data->map (QGLBuffer::ReadWrite);
m_data[pos].x = X1;
m_data[pos].y = y1
data->unmap ();
如果我在构造函数中只映射一次,这是行不通的
关于c++ - QGLBuffer 和 VBO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5785272/
目前,在我的渲染引擎中,每个网格数据都有一个 VBO(1 个 VBO 用于顶点,1 个 VBO 用于法线,1 个 VBO 用于纹理坐标,1 个 VBO 用于切线,1 个 VBO 用于副切线)并且它们都
我有一个代码,最初有一个着色器 (ourShader)、一个 VAO 和一个 VBO。它将使用 Stencil 测试渲染带有纹理立方体的场景及其在地面上的反射。现在,我想为后处理添加一个帧缓冲区,所以
因此,我使用两个 VBO 成功绘制了一系列线条,一个用于顶点,一个用于索引。 Python 列表是: vertices = [ [0,1],[0,2],[0,3], # Axe
因此,我需要使用一次绘制调用来渲染多个对象(而非实例)的方法。实际上我知道如何做到这一点,只是将数据放入单个 vbo/ibo 并使用 glDrawElements 进行渲染。 问题是:使用 glUni
大家好。我正在尝试呈现如下所示的两种方法。 RenderA() 使用的是 VBO 而 RenderB() 不是。当它到达 RenderB() 中的 glDrawArrays() 时,我收到一个 EXC
我正在尝试制作一个类似于《我的世界》的 opengl 体素引擎。 我创建了一个 block 类,我想将整个 block 的所有顶点放入单个 VBO 中。我之前只是将每个 block 放入 vbo 中并
我最近将当前项目中的绘图从内存阵列的标准绘图更改为 VBO。令我惊讶的是,帧速率从 60fps 显着下降到 30fps,绘制了 1200verts 的模型 8 次。进一步的分析表明,与从内存中绘制相比
所以我了解如何使用顶点缓冲区对象,并且它比立即模式绘图提供了很大的性能提升。我将绘制很多 2D 四边形( Sprite ),我想知道我是否应该为每个四边形创建一个 VBO,或者创建一个 VBO 来保存
我正在编写一个在 OpenGL 中渲染一些网格的插件。 我在一个 VBO 中有一个 Vertices 数组,在另一个 VBO 中有一个 Indices 数组。我现在想存储法线。由于多个面之间共享的顶点
你能渲染一个由四边形组成的 VBO,每个四边形都具有不同的纹理吗?现在,我读到了有关按纹理或纹理图集排序的内容,但这仍然不能回答我的问题。我正在开发一款 2d 游戏。现在我的动画 Sprite 将拥有
我有一个 2D VBO 对象,它表示 2D 空间中的点。此时绘制任意形状的最佳方法是什么?假设我想在每个位置画一个红色的“X”。 我可以使用着色器来做到这一点吗? 最佳答案 您不一定需要特殊的着色器,
如果我有一个顶点不断变化的模型,因此我需要在每一帧上重新绑定(bind) VBO 上的所有信息,使用即时模式是否会提高性能?或者,所有数据同时传递到 GFX 卡的事实仍然是 VBO 的救赎因素吗? 根
我想在交错的 OpenGL vbo 中存储三个浮点值和两个字节值。不幸的是,渲染的数据显然不正确。当我使用两个不同的 VBO 渲染相同的数据时,一切都工作正常,因此我不认为我的着色器存在问题。 /*
此代码工作正常,呈现正确(没有发布所有相关代码,因为我认为这些部分有问题): std::vector vboId; std::vector > verts; ...初始化: verts[num].pu
现在我正在使用索引,所以我在让我的 VBO 正确渲染法线时遇到了一些麻烦。我很确定我对普通指针的偏移有问题,但数学似乎加起来对我来说是正确的。 我如何存储数据: struct MyVertex {
我正在尝试使用 OpenGL 中的顶点缓冲区对象绘制两个四边形。他们应该用不同的颜色绘制。如您所见,第一个四边形具有红色、绿色、蓝色和黄色顶点。第二个四边形有不同的颜色,但问题是第二个四边形被完全绘制
我正在尝试在我的原生黑莓 10 应用程序中使用 VBO 绘制一个正方形。我的实现是, glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
在我的项目中,我想使用 vbo 显示许多对象(球体)。我设法毫无问题地显示 1 个对象,但是当涉及到 2 个或更多对象时,所有对象 (vbos) 都被最后定义的对象 (vbo) 替换。 CosmicB
我已经学习 VBO 几个星期了,有人告诉我 here VBO 可以渲染“约 100 万个顶点,每秒数百帧”。然而,我当前的 VBO 测试程序只能获得大约 50 FPS 的渲染速度和 100 万个顶点。
我正在使用 Haskell 制作一个渲染引擎,并且正在优化我的代码以使用 VBO。我想稍微抽象一下几何类型,因为有相当数量,并且想把它放在一个函数和一些参数中。 例如,如果我有一组几何体,它是一对顶点
我是一名优秀的程序员,十分优秀!