问题标签 [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.

0 投票
0 回答
476 浏览

opengl - GLGS:如何将采样器“连接”到纹理?

我正在尝试从几何着色器中的 3D 纹理中读取:

这就是我在初始化 GL 代码中设置纹理的方式:

但是如何将几何着色器中的采样器“文本”与我的纹理相关联?

到目前为止,我还没有告诉 OpenGL 有一个名为“text”的采样器,它应该对纹理进行采样。

编辑:我尝试了以下方法:

这里有什么问题?

0 投票
1 回答
4000 浏览

opengl - 使用几何着色器优化立方体渲染

在我的第一个 opengl 'voxel' 项目中,我使用几何着色器从 gl_points 创建立方体,它工作得很好,但我相信它可以做得更好。在 alpha 颜色中,我传递有关应该渲染哪些面的信息(以跳过与其他立方体相邻的面),然后使用“参考”立方体定义创建可见面的顶点。每个点乘以 3 个矩阵。本能告诉我,也许整张脸都可以乘以它们而不是每个点,但是我的数学能力很差,所以请指教。

-------- 更新代码:-----

0 投票
1 回答
13060 浏览

glsl - 具有法线和颜色的简单直通几何着色器

我编写了一个非常简单的直通几何着色器。我的输入原语是点,输出原语也是点。我还想通过几何着色器将颜色和法线从顶点着色器转发到片段着色器。着色器被完美地编译和链接,但最终的颜色非常奇怪。我认为这个转发有问题。谁能指出问题?这是我的着色器:

顶点着色器:

几何着色器:

片段着色器:

0 投票
1 回答
240 浏览

opengl - 几何着色器附加基元

我想使用 GLSL 几何着色器来查看线条并确定放置纹理注释的位置,同时考虑到当前的 ModelView。似乎我仅限于每次调用只能获得 4 个顶点(使用 GL_LINE_STRIP_ADJACENCY),但我需要的是要评估的整个线带。

我可以使用其他一些原始类型(例如多点,如果在 GL 中有等价物),但重要的一点是我想考虑所有几何图形,而不仅仅是一部分。

是否有一种扩展类型可以为几何着色器提供额外的顶点?或者除了使用几何着色器之外还有更好的方法吗?

0 投票
1 回答
1132 浏览

opengl - 如何在 GLSL 中的几何着色器上获得少量顶点

顶点着色器处理后我需要得到 4 个顶点。具有目标的原始(四边形)绘图:GL_TRIANGLE_STRIP。

我的代码:

编译器抛出错误:“数组索引超出范围”

我如何在几何着色器上获得 4 个顶点?

0 投票
2 回答
551 浏览

computational-geometry - 在向量上的点垂直于向量

我正在使用一个模型,我必须在连接这些点的线上的点 p3 处计算从 p1 和 p2 (3d) 到矢量的垂线。

安排会是这样的 p1--------p3------------p2​​ 。有时这个 p3 可能与 p1 或 p2 重合。

我知道如何使用点积和决定比率来计算与向量 p1-p2 的垂直向量。但是如何让它通过这一点 p3 呢?

我将在几何着色器中计算..!

有任何想法吗 .. ?

0 投票
0 回答
954 浏览

opengl - 在作为 glVertex 工作的顶点着色器(glVertexAttrib3f)中更新属性变量

我在使用属性变量将值输入顶点着色器时遇到问题。我想为几何着色器提供前一个图元(线)中的一个点以进行一些计算。我在顶点着色器中使用vec3属性变量(Ppoint)提供这一点,然后使用顶点着色器中的输出变量和几何着色器中的输入变量(pointPass)提供几何着色器。

问题是当我在绘制线条时更新 glBegin()/glEnd() 块中的属性变量时,glVertexAttrib3f 中的值被视为顶点,并且线条也被渲染到这些点。这会导致显示一些额外的线条,并且所有几何着色器功能都会受到干扰。

这是我所有着色器的代码和用于绘制线条的 opengl 程序。

顶点着色器

几何着色器

片段着色器

用于绘制线条的 OpenGL 程序

因此,不是我想从 vPoints[1] 到 vPoints[2] 和 vPoints[2] 到 vPoints[3] 绘制的 2 条线,而是考虑到两个 glVertexAttrib3f 语句作为顶点,我得到 3 条带有 6 个顶点的线。

我这样做是正确的,还是有更好的方法或另一种方法来做到这一点。

0 投票
2 回答
861 浏览

opengl - 如何使用 GLSL 着色器使用 OpenGL 在头发颗粒上均匀应用亮度?

我使用头发粒子系统使用 Blender 2.66 创建了一个发型。这看起来像这样:

在此处输入图像描述

如您所见,亮度已应用于线条片段。转换后,我已将发型网格导出为 OBJ 文件格式。我在我的程序中解析了它,渲染看起来像这样:

在此处输入图像描述

粒子已绘制为 GL_LINES(在我的 OBJ 文件中,每个面有 2 个顶点)。

在另一个测试程序中,我想用一个简单的线段来测试亮度。这是我的顶点缓冲区:

结果(线在原点垂直于X轴旋转->我调用glLineWidth(5.0f)以获得更好的可见结果):

在此处输入图像描述

通过实时动画,我可以看到亮度是正确的,但只是在线条的特定“一侧”。这是正常的,因为一条线段应该有无限的法线,而我只有两条法线(每个顶点一个)。我想确切地说这两个法线是方程平面的法线 Y = 0 -> n(0.0, 1.0, 0.0)。所以我想知道是否可以为每个顶点添加多个法线?我相信 OpengL 做不到。但也许另一种方式是可能的。这是一张图,解释了我想做什么来计算线段每个部分的正确亮度:

在此处输入图像描述

就像您在第一张图片上看到的那样,Blender 可以在线段上实时计算亮度。此外,这张图片上存在 OpenGL 渲染。所以我确信这是可能的。我尝试重复相同的线段坐标两次,但对于第二行,我应用了相反的法线 n2(0.0, -1.0, 0.0) 但它不起作用。“另一面”是“黑暗的”。两个多边形也是一样的。目前,我使用 GLSL 着色器。我认为使用几何着色器或镶嵌着色器等特殊着色器是可能的。也许需要 CUDA 语言。但我不确定。

有人可以帮助我吗?

0 投票
1 回答
1743 浏览

opengl - glsl 通过几何着色器问题

此时我有一个工作的顶点和片段着色器。如果我完全删除我的几何着色器,那么我会得到预期的立方体,每个顶点都有颜色。但是添加了几何着色器后,根本没有几何图形出现。

顶点着色器:

几何着色器:

片段着色器:

据我所知,我的显卡支持 OpenGL 3.3。而且,正如我所说。它可以在没有几何着色器的情况下工作。作为数据,我传入两个 GLfloat 数组,其中每个数组分别是顶点或顶点颜色。

0 投票
0 回答
319 浏览

c++ - 剪裁平面与几何相交处的曲面

我有一个几何图形,我正在使用几何着色器与 vbo 结合显示。我还有两个剪裁平面,用于显示我想要的对象部分。

现在我想显示一个表面以覆盖由剪裁平面引起的几何图形中的开口(我使用几何着色器渲染一个空心封闭表面)。

我通过两次渲染几何图形来尝试使用模板缓冲区方法。但速度非常慢。

建议一种让它更快的方法。