问题标签 [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 回答
326 浏览

opengl-es - WebGL - 使用哪个 API?

我想绘制多个多边形形状(每个形状都有自己的一组顶点)。我希望能够相互独立地定位这些形状。

我可以使用哪个 API 来设置顶点着色器的 a_Position?

  • A)gl.vertexAttrib3f
  • B) gl.vertexAttribPointer + gl.enableVertexAttribArray

谢谢。

0 投票
1 回答
3326 浏览

blender - Blender如何计算顶点法线?

我正在尝试计算各种游戏资产的顶点法线。我计算的法线用于“膨胀”模型(在真实模型后面画出粗轮廓)。

我目前计算每张脸的法线并将它们平均(Stack Overflow 上的其他几个问题建议使用这种方法)。但是,这不适用于像这样的尖角(相邻面的法线用橙色标记,我试图计算的法线用绿色勾勒出来)。

例子

该对象看起来像一个小基座,我们正在查看左前角。有三个相邻的面(底面不可见;它的法线指向正下方)。

Blender 计算出一个很好的法线,它正好位于三个面法线的中间;似乎它以某种方式计算了对三个面法线中的每一个具有最小旋转的法线。当四边形以不同的方式进行三角剖分时,Blender 的法线也不会改变。

平均面的法线给我一个不同的法线,它在 Z 轴上略微向上(-0.45、-0.89、+0.08)。以这种方式膨胀我的模型不会产生良好的轮廓,因为轮廓的底面向上移动并且没有包围原始模型。

我试图查看 Blender 源代码,但找不到我要找的东西。如果有人可以将我指向 Blender 源代码中的算法,我也会接受。

0 投票
2 回答
732 浏览

opengl - 如果我没有使用 glVertexAttribPointer 显式绑定属性,将使用哪些默认位置?

请参阅“ OpenGL 着色器的显式与自动属性位置绑定

如果我没有使用 明确绑定属性glVertexAttribPointer,将使用哪些默认位置?

我在哪里可以找到它的官方链接?

0 投票
1 回答
3970 浏览

c++ - glVertexAttribPointer GL_INVALID_OPERATION 无效 vao vbo 指针使用

我正在尝试在安装了最新驱动程序的 NVIDIA GTX 970 上使用 OpenGL 4.4 实现延迟着色。
我的代码直接渲染到屏幕上。为了添加第二个通道,我创建了一个用于渲染场景的 FBO 和一个用于渲染最终图像的四边形。当我尝试在第一遍中不渲染任何内容并在第二遍之后绘制四边形时,四边形是可见的。当我在第一次通过时尝试渲染网格(例如立方体)时,四边形消失了。我还收到以下错误消息:
在此处输入图像描述

网格加载了 AssImp。
我使用以下代码创建 VBO / VAO:


我像这样渲染我的网格:


使用 gDEBugger 我发现错误消息来自 glVertexAttribPointer。但是由于 gDEBugger 不支持 OpenGL 4,所以它本身会抛出很多错误并且不能真正工作。

FBO 是这样生成的:


createGBuf() 函数如下所示:

0 投票
1 回答
1601 浏览

three.js - three.js 在平滑着色自定义几何图形时保持折痕

我通过向新的 THREE.Geometry() 添加顶点和面来创建自定义网格,然后在其上运行 computeFaceNormals() 和 computeVertexNormals() 以平滑渲染(我使用的是 MeshPhongMaterial)。如果没有 computevertexnormals,我的部分网格会出现条纹。问题是 r69 中包含的常用 computeVertexNormals() 忽略了锐边。这是一个优雅的函数,通过平均周围的面来构建每个顶点的法线。然而,它平均了我需要在外观上保持锐利的边缘的法线。对具有相同主题的另一个问题有一些有希望的评论但是没有发布代码来解决保持边缘锐利的问题。

我试图修改 computeVertexNormals() 以添加边缘检测,但没有运气。我的尝试是基于检测相邻面之间的角度,如果它在给定阈值内,则仅将它们的法线添加到平均值中。这是我的代码:

}

任何人都可以提供折痕检测策略,这样我就可以拥有带有锐利边缘的光滑形状吗?提前致谢!

0 投票
1 回答
203 浏览

glsl - GLSL:数据失真

我正在使用 OpenGL 3.3 GLSL 1.5 兼容性。我的顶点数据遇到了一个奇怪的问题。我正在尝试将索引值传递给片段着色器,但该值似乎会根据我的相机位置而变化。

这应该很简单:我通过顶点着色器将 GLfloat 传递给片段着色器。然后我将此值转换为无符号整数。该值大部分时间都是正确的,除了片段的边缘。无论我做什么,都会出现同样的失真。为什么我的相机位置会改变这个值?即使在下面这个荒谬的例子中,tI 也异常地等于 1.0 以外的值;

如果我发送整数数据而不是浮点数据,我会遇到完全相同的问题。我输入的顶点数据似乎并不重要。我在数据中输入的值在整个片段中不一致。失真甚至每次看起来都完全相同。

沿片段边缘的值不等于 1.0

0 投票
1 回答
408 浏览

opengl - 几何着色器似乎不接受输入属性

我将一条线传递给几何着色器并输出一个长方体。我通过在 x 或 y 方向上添加一个恒定的“厚度”来在该线的每一端创建 4 个新点。如果我在几何着色器中设置厚度,它可以正常工作,但是当我尝试将它作为顶点数据的一部分传递给着色器时,我似乎无法在几何着色器中访问它。当我 thickness = vThickness[0]在几何着色器中设置时,没有绘制任何内容。

我可以访问顶点着色器中的厚度数据,它似乎是有效的(我将输出颜色设置为厚度,并将长方体绘制为白色,这很好,因为它应该是一个 >= 1 的整数)。问题似乎出在顶点着色器和几何着色器之间的接口上。

顶点着色器:

几何着色器:

片段着色器:

我传递的数据:

0 投票
1 回答
914 浏览

c++ - Opengl - 渲染不同的顶点格式

我正在寻找一种很好的方法来渲染具有不同顶点布局的网格对象,而无需付出很大的努力(例如,为每个顶点布局定义一个渲染器类)。您可以在下面看到一些不同顶点格式的示例。

背景是,我想渲染不同的对象。其中一些是不拥有纹理坐标或法线的基元(例如平面、球体)。另一方面,我想渲染具有法线、纹理坐标等的更复杂的对象。是否有一种聪明的方法或设计来避免编写多个渲染器类而使用单个渲染器类?我知道,这也会影响着色器。

0 投票
1 回答
108 浏览

r - 使用 R 中的函数使用 switch() 分配图形属性

对于我在这里提出的问题,我有一个后续问题。

我想构建一个函数,该函数将基于某个参数(lev在下面的示例中调用)将属性分配给图形。这是我的玩具图:

这是一个示例函数:

似乎该color属性已添加到我的图表中:

但是,当我打印属性的值时,结果发现它们不存在:

我错过了什么?

编辑y当我只有一种颜色时,分配的解决方案非常完美。但是,当我想在每个switch选项中分配多种颜色时,我仍然遇到问题。这是我对作业的尝试y

出于某种原因,我只分配"green"颜色:

0 投票
1 回答
133 浏览

opengl - OpenGL - Can't get shader to display vertex colors

So I finally set up opengl window properly and got triangles to show up using vaos, vbos and glDrawElements() etc.

Here is the what i have

But now I have new problem - can't get shaders to work. I don't quite understand them yet. I want fragment shader to show vertex colors which I put into a separate buffer object.

Example code:

And render:

Everything seems to work fine except for shaders. Any help is appreciated :) Thanks.