问题标签 [vertex-attributes]

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.

0 投票
1 回答
794 浏览

c++ - OpenGL - 具有多个 VBO 和 VAO 的 glVertexAttribPointer 使用相同的着色器

我的渲染引擎中设置了多个 VBO 和匹配的 VAO。我对使用 glVertexAttribPointer 有点困惑。我已经设置它并且它渲染得很好,但我很好奇如果我对所有这些不同的对象使用一个着色器(基本漫反射),我是否每次创建 VAO 时都设置 glVertexAttribPointer。我想我想知道我设置的属性指针是在着色器还是顶点数组对象中设置的。我假设它是顶点数组对象,但希望得到一些澄清。

0 投票
1 回答
4224 浏览

opengl - OpenGL 缓冲区 - 步幅与紧密包装

为每个属性使用跨步顶点缓冲区与紧密打包缓冲区的优缺点是什么?我的意思是例如:

步幅:xyzrgb xyzrgb xyzrgb

紧的:xyzxyzxyz rgbrgbrgb

乍一看,使用 stride 时您可以轻松更改大小,但使用glBufferData().

对我来说,最好使用紧密模型,因为位置、颜色和纹理坐标可能来自本地内存中的不同数组,并且没有跨步缓冲区数据函数;您必须在上传之前将所有数组复制到交错的缓冲区中,或者glBufferSubData()每个属性的每个顶点使用一个(我猜这个想法很糟糕)。

使用交错缓冲区(步幅)似乎是一种常见的做法。这是为什么?我在这里缺少什么吗?

0 投票
0 回答
548 浏览

ios - iOS 上的 OpenGL ES 如何设置 glVertexAttribPointer

我无法设置我的 OpenGL ES 代码。我有理由确定我的代码问题是我设置 glVertexAttribPointer 的地方。这是我如何将顶点和索引插入到它们的数组中:

然后这是我缓冲数据的方式:

这段代码确实以我正在渲染的文件的一般形状呈现东西,但它有许多突出的三角形和缺失的区域。我怀疑问题出在我设置 glEnableVertexAttribArray 的位置,但我一直无法弄清楚如何设置它以使我的数据即使在查看规范之后也能正确加载。

如果有人能告诉我,我会怎么吃饱。

这是我试图加载测试的 ThreeJS 文件:http: //thingiverse-production.s3.amazonaws.com/threejs_json/8c/13/d8/2b/76/ca83d33d20mmTestCube_repaired.js

0 投票
1 回答
322 浏览

opengl - OpenGL:为什么这些代码什么都不画,交错的 VBO 和 GLSL

我看了很多论文和博客,最后我找到了这些代码来生成一个四边形:gProgram 中的程序存储

这是我的顶点数据:存储在 gVertexVBO

和索引数据:存储在 gIndexVBO

在绘图部分,我喜欢这样:

ps:将gtransform设置为单位矩阵

除了清除的背景颜色外,我什么也没有得到,我认为这些代码中的错误,但我不知道它在哪里,我感谢任何帮助。

如果您需要检查初始化部分的代码,我会在回复中发布,谢谢!

0 投票
1 回答
481 浏览

opengl - 无法使用 glDrawElements() 和 glMultiDrawElements() 获得输出

我正在构建一个图形应用程序,用户可以通过单击画布指定顶点,然后顶点用于绘制多边形。

该应用程序支持线、三角形和多边形模式。通过计算点击次数来绘制一条线和三角形。然后创建顶点数组并将数据绑定到缓冲区并使用glDrawArrays(). 棘手的是多边形模式。用户可以指定任意数量的顶点并单击鼠标右键触发绘图。我最初计划使用glMultiDrawElements,但不知何故我没有得到任何输出。所以我尝试glDrawElements()循环调用。仍然没有运气。我进行了很多搜索并阅读了很多关于使用glDrawElements()/glMultiDrawElements()VBO 和 VAO 以及使用glVertexPointer()and的文档glColorPointer。仍然没有运气。

我使用以下方法来跟踪顶点属性:

GLfloat ** 多边形顶点;//每个多边形顶点列表都进入这个..
GLuint * polygonIndicesCounts; //保存每个多边形的顶点数的指针
GLuint ** polygonIndices; //保存与多边形对应的顶点索引的指针数组
GLfloat * polygonColors; //每次鼠标点击,颜色都是随机生成的。

和渲染代码:

0 投票
1 回答
1888 浏览

c++ - 将属性传递给 OpenGL 顶点着色器的行为很奇怪

问题:

结果 1:我将顶点属性传递给着色器,程序运行 5 秒,然后显卡驱动程序停止响应并恢复,但程序没有。

结果 2:我将帧速率限制在 60,然后做同样的事情。该程序运行良好,但是当我尝试在同一运行时为顶点属性传递不同的值时,它不会更新几何图形(仅传递的第一个顶点属性有效)。

我正在使用带有 GLSL 140 的 OpenGL 3.1 版。(我的显卡/驱动程序将支持的最高版本)

我试过的:

互联网浏览和阅读教程。由于我不太了解 OpenGL,但我认为问题在于我只是不知道要搜索什么。

注意:对不起,如果我有一些不好的 OpenGL 编码实践,我还在学习。

代码:

opengl2_vert.glsl

游戏.cpp

IO.cpp

入口点/游戏循环

OpenGL 支持

0 投票
2 回答
413 浏览

c++ - 在openGL中,我如何从内存中编辑特定的顶点缓冲区属性

如果我的顶点数据被布置

例子:

我知道我们使用

对于完整的复制位置,这是我一直在做的,但我只需要编辑顶点的位置数据而不更改任何其他属性

我只是在更新 cpu 端的位置数据以进行一些测试

0 投票
1 回答
113 浏览

opengl - 如何将 VBO 存储在自定义对象中

我想以Cat顶点缓冲区对象的形式在每个实例中存储我的对象的顶点、法线和纹理信息,但我不知道如何。我想要这样的东西:

如果你不能创建包含特定 VBO 的对象,你会怎么做?

0 投票
1 回答
75 浏览

opengl - 定义顶点属性时可能出现的错误

我在尝试编译顶点着色器时遇到分段错误。我想我在传递顶点属性时发现了问题。以下行编译(它们可能不起作用,但它们仍然编译):

不会编译。我想我只能定义 3 个 vec4 属性。但是,带有 GL_MAX_VERTEX_ATTRIBS 的 glGetIntegerv 返回 16,这符合 OpenGL 标准。这是与我的硬件相关的某种错误吗?我正在使用英特尔显卡

和台面 10:

操作系统是 ubuntu 14.04。

0 投票
1 回答
155 浏览

opengl - Haskell opengl 属性未激活

我正在尝试从顶点缓冲区对象呈现一些数据。但是很少使用 glutil 和 raw。当程序运行时,它陷入了无限循环,我得到了你在下面看到的错误。

顶点着色器

片段着色器

我曾尝试使用 430,但没有奏效。所以我尝试使用 150,因为我看到很多人在使用它。此外,我在使用 raw 时尝试过使用布局,但这没有用。

使用实例

错误