问题标签 [geometry-shader]
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 - 为什么我通过的顶点比在 GLSL 几何着色器中生成的要多?
为什么我可以通过我的几何着色器 N(其中 N 是一个非常高的数字,例如 10000)顶点并像这样渲染它们:
...但我不能像这样生成 N 个顶点(当只传递一个顶点时):
OpenGL 是如何区分这两者的呢?
*注意:我修改了访问 gl_PositionIn[0] 等的代码,但第二个仍然给我一个错误。*
opengl - 带有几何着色器的 OpenGL 几何挤出
借助 GLE 管道和挤压库 ( http://www.linas.org/gle/ ),我能够使用 OpenGL 将 2D 计数挤压成 3D 对象。该库在 CPU 上完成所有工作并使用 OpenGL 即时模式。
我猜想使用几何着色器在 GPU 上进行挤压可能会更快,尤其是在渲染大量几何图形时。由于我还没有任何在 OpenGL 中使用几何着色器的经验,我想知道这是否可能以及我必须注意什么。您认为将这些计算转移到 GPU 上并提高性能是个好主意吗?还应该可以将渲染的几何图形从 GPU 中返回到 CPU,可能使用“渲染到 VBO”。
opengl - GLSL 如何使用几何着色器显示法线?
我有vertex shader
和fragment shader
它将索引GL_TRIANGLE_STRIP
作为输入
代码按预期工作,但我不确定我的法线是否正确排列:它们存储为字节(转换为 GLfloat 为 b / FF),坐标 xyz 已更改,有些可能需要取反。
有人可以告诉我geometry shader
将法线显示为线条,如http://blogs.agi.com/insight3d/index.php/2008/10/23/geometry-shader-for-debugging-normals/所示(那些着色器不适用于一切似乎在顶点和片段着色器之间丢失/输入数据)。
PS 我不确定我是否正确地完成了所有操作(启动 OpenGL 和 GLSL),所以任何建议也值得赞赏。
编辑:我geometry shader
通过例子变得简单
但我不知道它在哪里gl_ModelViewProjectionMatrix
(似乎已弃用)并且结果看起来很糟糕,似乎包括法线在内的所有东西都被剥离了。在 glPolygonMode(GL_FRONT, GL_LINE) 模式下的图片,纹理也试图映射到那些。
c++ - 如何使用几何着色器从点数据中绘制正方形
我想用几何着色器从点数据中绘制一个正方形。
在 中vertex shader
,我发出一个点。
在几何着色器中,我想创建一个三角形带,形成一个正方形。
目前大小无关紧要,因此模型的大小应为1
(范围从(-0.5,-0.5)从初始点位置到(+0.5,+0.5)。
我需要帮助来计算发射顶点的位置,如代码中所示:
我想用来trans
将初始点转换为所需的坐标。我怎么会意识到这一点?
为清晰起见进行编辑
我想从一个点生成顶点缓冲区的其他内容;一架飞机:
相反,我只在这些点的中间给出一个点,并希望通过减去和添加中心的差异来生成真实点(0.5 和 -0.5 等)。我所需要的只是知道如何在代码中应用这种转换(在哪里???
)。
c++ - 由几何着色器创建的旋转顶点
我正在尝试从 6 个点生成一个立方体(每个点代表一个边,然后是 2 个额外的值来说明它是否旋转到面对 x 或 y 轴,z 轴不需要一个,因为默认情况下它是这样的) . 当我尝试将 gl_Position 值乘以 mat4 旋转矩阵以使立方体的侧面正确旋转时,问题就出现了。它甚至没有出现故障,它根本不显示面部(当我没有矩阵乘以值时它会显示)。
这是我的几何着色器:
片段和顶点是非常标准的(顶点上有一些基本的相机东西)。
opengl - 计算法线几何着色器
我目前正在编写自己的 GLSL 着色器,并且想要平滑着色。当我在将法线发送到 VBO 之前计算法线时,阴影会起作用,但这里的问题是当我使用骨骼矩阵实现动画时,法线不正确。
我正在使用几何着色器来计算法线,但我不知道如何平滑它们。
这是我的几何着色器:
我需要计算法线的脸部旁边的脸部,但我不知道如何获得它们。
geometry - 如何在片段着色器中找到 4 个顶点之间的插值位置?
我正在使用 SharpDX(C# 中的 DirectX11)创建一个着色器,它从顶点着色器的输出中获取一个段(2 个点) ,然后将它们传递给一个几何着色器,它将这条线转换为一个矩形(4 个点)并分配四个角是一个纹理坐标。
之后,我想要一个片段着色器(它接收插值位置和插值纹理坐标)来检查“矩形的脊椎”(即穿过矩形中间的线)的深度。
问题是我不知道如何在矩形的脊椎处提取相应片段的位置。发生这种情况是因为我插入了纹理坐标,但我不知道如何使用它们来获取我想要的片段,因为 a) 纹理的坐标系和 b) 我的片段在屏幕空间中的位置不是相同的。
非常感谢您的帮助。
opengl - 是否可以使用独特的几何着色器绘制带有股线的球体?
我想显示一个简单的 UV 球体(从 Blender 导出)并使用独特的几何着色器生成具有法线坐标的线条。
第一次,我编写了一个简单的几何着色器,它简单地将输入顶点信息返回到片段着色器。为了简单起见(例如),我删除了片段着色器中的亮度计算。
顶点着色器:
几何着色器:
和片段着色器:
现在在 C++ 代码中要绘制的原始类型(这里是三角形):
最后是输出:
直到这里一切都好。现在我想在球体上生成股线作为法线。为了完成这项工作,我编写了以下几何着色器(顶点和片段着色器是相同的)。
输入原始类型是点我修改了 C++ 代码来绘制场景:
和输出:
最后,如果我想在几何着色器中将三角形输入作为输入图元,将 line_strip 作为输出图元,我有以下着色器:
输出如下:
但我的目标是使用相同的几何着色器在一个输出中显示场景(球体+股线)。我想知道是否可以这样做。我不这么认为,因为几何着色器必须只有一种类型的输入基元和另一种输出类型,而不是几种类型。我想确定它是否可能。
opengl - 使用几何着色器和lines_adjacency绘制四边形和三角形的混合
我目前的渲染实现如下:
- 将所有顶点信息存储为四边形而不是三角形
- 对于三角形,只需重复最后一个顶点(即
v0 v1 v2 v2
) - 将顶点信息传递
lines_adjacency
给几何着色器 - 检查是四边形还是三角形,输出为
triangle_strip
我走这条路的原因是因为我正在实现一个线框着色器,并且我想绘制没有对角线穿过它们的四边形。但是,我已经放弃了这个功能。
我现在想知道是否应该回到简单的绘图GL_TRIANGLES
,并将几何着色器排除在等式之外。但这让我开始思考......从性能的角度来看,实际上什么更有效?
- 平均而言,我的场景由等量的四边形和三角形组成。
- 绘制所有三角形意味着:每个四边形 6 个顶点,每个三角形 3 个。
- 使用lines_adjacency 绘制意味着:每个四边形4 个顶点,每个三角形4 个。
- (这是索引绘图,因此它们的顶点缓冲区大小相同)
所以顶点比率是 9:8(三角形:lines_adjacency)。
假设使用索引绘图,每个顶点仅由顶点着色器处理一次(而不是每个索引一次),我是否正确?在这种情况下,绘制三角形会更有效(因为不需要执行额外的几何着色器步骤),唯一的缺点是索引占用的额外内存量很小。
再说一次,如果顶点确实每个索引处理一次,我可以看到边缘使用 lines_adjacency 方法,考虑到几何转换非常简单,而顶点着色器可能正在运行更密集的光照计算。
所以这几乎总结了我的问题:如何用索引绘图处理顶点,如果包含一个简单的几何着色器,可以预期什么样的性能影响?
sql - 获取圆周扇区内的坐标
我有一个带有闪电坐标的数据库(PostgreSQL)。我想要圆周扇区内的坐标(SQL 查询)。我有圆周的半径,角度(Z)和点A,以及极值点的坐标([lat1,lng1],[lat2,lng2])。
非常感谢!