问题标签 [vao]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl-es-2.0 - 未使用 VBO 时 OpenGL 应用程序崩溃
我试图在 OpenGL ES 2.0 中不使用 VBO 来绘制对象。我的代码往往会不时使应用程序崩溃(并非总是如此,甚至没有任何改变)。以下是代码。我认为问题在于我只启用 m_distLocation 而不向着色器发送任何数据。所有统一值都已正确设置。我认为问题仅在于属性变量(m_posAttr 和 m_distLocation)、绑定。
我将不胜感激任何帮助。
java - 绘图时 VAO 和 VBO 崩溃
我将代码从 DisplayLists 更改为 VBO/VAO。但是当我运行应用程序时它崩溃了。
它在第一次尝试绘制 VAO 时崩溃。我不使用着色器进行绘制(所以它不会引起问题)。
一个 VAO 中最多有 12 个面(12 * 3 个顶点)以及这些面的纹理坐标。有多达 500 000 个 VAO。
我如何创建一张脸:
创建 VBO/VAO:
渲染 VBO / VAO:
这是错误:
我认为在这里发布整个错误是没有意义的。你知道为什么会这样吗?我找不到有关 VBO 的此错误的任何信息。
opengl - Opengl:第一个顶点总是在原点绘制
我遇到的问题是,无论我希望它在哪里(所有其他位置都是正确的),第一个顶点总是在 (0,0,0) 处绘制。我认为这是我的“init”函数中的一个错误。以下是我使用的职位:
我的“初始化”功能:
还有我的“渲染”功能(只是为了渲染 VAO,没有着色器):
我还尝试调整“glVertexAttribPointer”函数中的“步幅”和“指针”值,但它不起作用。
android - 将顶点缓冲区转换为顶点数组
我正在研究 OpenGL 程序,我必须计算一个边界框。我编写了代码来执行此操作,但我无法从 vertex buffer 获取顶点坐标。有人可以向我解释一种从顶点缓冲区获取数据的简单方法吗?我正在为 android 和 OpenGL es 使用 Java
opengl - 为什么纹理(GL_TEXTURE_2D)不能与(VertexArray)VAO一起使用
我正在开发一个带有 openGL 部分的项目。场景图部分基于核心OpenGL1.0,仍然使用glBegin和glEnd。现在我在上面添加新东西并且必须使用 VAO。我是初学者并使用它QOpenGLFunctions_3_0
,因为我无法从 openGL 注册表中找到 gl3.h 问题是现在我使用GL_TEXTURE_2D
with glBegin(GL_QUADS)
,它可以工作,而且我也可以单独绘制glDrawElements( GL_QUADS, 4, GL_UNSIGNED_BYTE, 0);
它。但是当我使用GL_TEXTURE_2D
and时glDrawElements( GL_QUADS...
,纹理没有正确生成。请告诉我正确的使用方法。这是代码
opengl - 在绑定到一个 vao 的 vbo 之间切换
目前在我的渲染函数中,我使用一个 VAO(顶点数组对象)和四个与这个 VAO 绑定的 VBO(顶点缓冲区对象)。
对于每个 VBO,我绑定到 vao
然后在我的渲染函数(伪代码)中,对于每一帧:
我知道我可以将所有几何图形放在一个 VBO 中,但在某些情况下它的大小超过 5Mb,这导致(可能)它没有放在 GPU 上。
我如何切换所有绑定的 VBO 来绘制它们?
opengl - OpenGL 顶点数组对象是存储顶点缓冲区名称和索引,还是只存储索引?
创建时,VAO 是否只跟踪 VBO 索引(通过glBindVertexBuffer),或者哪些 VBO 名称绑定到这些索引?如果我在 VAO 创建期间使用glVertexAttribBinding指定绑定索引为 0 ,我可以在绘制调用之前将不同的 VBO 绑定到索引 0 并让它使用该 VBO 的内容,还是总是使用任何 VBO在创建 VAO 时绑定到索引 0?
我问是因为我发现很多示例在调用glVertexAttribFormat和glVertexAttribBinding之前调用,glBindVertexBuffer
如果 VAO 仅跟踪索引(因为绑定索引在 中给出glVertexAttribBinding
),则不需要这样做。
c++ - glVertexAttribPointer GL_INVALID_OPERATION 无效 vao vbo 指针使用
我正在尝试在安装了最新驱动程序的 NVIDIA GTX 970 上使用 OpenGL 4.4 实现延迟着色。
我的代码直接渲染到屏幕上。为了添加第二个通道,我创建了一个用于渲染场景的 FBO 和一个用于渲染最终图像的四边形。当我尝试在第一遍中不渲染任何内容并在第二遍之后绘制四边形时,四边形是可见的。当我在第一次通过时尝试渲染网格(例如立方体)时,四边形消失了。我还收到以下错误消息:
网格加载了 AssImp。
我使用以下代码创建 VBO / VAO:
我像这样渲染我的网格:
使用 gDEBugger 我发现错误消息来自 glVertexAttribPointer。但是由于 gDEBugger 不支持 OpenGL 4,所以它本身会抛出很多错误并且不能真正工作。
FBO 是这样生成的:
createGBuf() 函数如下所示:
opengl - 不能创建多个 VAO
我正在尝试使用现代(3.3)OpenGL 创建一个用于游戏的简单图形系统。动态对象将具有动态几何图形,并且 VBO 将在发生更改时更新。这部分很容易实现。虽然只要只使用一个 VAO,一切都运行良好,但对 glGenVertexArrays 的进一步调用不会创建另一个对象(打印第一个和第二个的 ID 都返回 1)并且新对象的 VAO 初始化中的某些内容会呈现第一个无法执行任何编辑。每个“现代 OpenGL”教程要么只使用一个对象,要么有一些非常显着的冲突(最常见的是使用 glVertexAttribPointer)。以下代码涉及对象的图形系统。(不知道这有多重要,但我使用 glfw3 来创建窗口和上下文)。
初始化游戏对象(图形片段)
更新网格
渲染对象
如果任何对 OpenGL 更有经验的人可以指出我的错误(或其他一些问题),那就太好了。
c++ - 用于渲染不同对象的 VAO 和 VBO
我编写了这个“模型”类来加载 .obj 文件并在 VBO 中为它们分配数据。它的代码是这样的:(注意它是如何不使用 VAO 的)
我曾经认为下一个代码可以很好地渲染两个不同的对象:
但事实证明,OpenGL 只会绘制两只牛或两个立方体。(取决于我在 init() 中最后加载的模型)
顺便说一句,我很确定在第一张图片中,opengl 确实尝试绘制了两只奶牛,但是调用 glDrawArrays() 函数时使用了立方体所需的顶点数量。
那么我错过了什么?我是否需要为每个缓冲区对象或类似的东西使用不同的 VAO?