问题标签 [vertex-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 投票
1 回答
155 浏览

opengl - 顶点着色器问题

我无法让我的顶点着色器(1.20)工作。我正在渲染一个简单的白色三角形,但是当我加载顶点着色器时,三角形消失了。

我也试过:

无济于事。我真的很困惑,因为我的片段着色器确实有效。例如,

会把我的三角形变成绿色。我找不到任何错误(并且着色器编译时没有错误),所以我想知道是否有人有任何想法。

0 投票
1 回答
582 浏览

opengl - GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 总是返回 0

我正在尝试使用 OpenGL 的变换反馈功能。我编写了一个简约的顶点着色器并用它创建了一个程序(没有片段着色器)。我还glTransformFeedbackVaryings使用单个输出变量名称进行了调用,并将缓冲区模式设置为GL_INTERLEAVED_ATTRIBS. 着色器程序编译和链接正常(我还确保在glTransformFeedbackVaryings调用后链接。

我使用 启用了单个顶点属性数组glEnableVertexAttribArray,为通用顶点属性分配了一个 VBO,并调用glVertexAttribPointer了该属性。

我已经将它绑定TRANSFORM_FEEDBACK_BUFFER到另一个我生成的缓冲区并创建了一个数据存储,该存储应该足够大,可以在转换反馈期间写入。

然后我启用转换反馈并调用glDrawArrays(GL_POINTS, 0, 1000). 在整个程序运行过程中,我没有遇到任何崩溃。

问题是我没有得到任何迹象表明转换反馈在通话TRANSFORM_FEEDBACK_BUFFER期间正在向 写入任何内容。glDrawArrays我设置了一个监控查询,它 GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN总是返回 0。无论我尝试什么,我似乎都无法获得转换反馈来写任何东西(不要介意任何有意义的事情!)

如果有人对我如何获得转换反馈来写任何东西有任何建议,或者我应该检查的东西,请告诉我!

注意:我不能使用变换反馈对象,也不能使用顶点数组对象。

0 投票
2 回答
2847 浏览

opengl - 你能判断一个顶点属性是否从顶点着色器中启用吗?

我想知道是否有办法判断顶点属性是否从顶点着色器中启用?我知道如果顶点属性被禁用,所有值都将被视为 0.0,所以我可以进行如下测试:

但这对于属性启用并且值只是设置为0的情况存在明显的问题(它将被视为已禁用)!

另一种解决方案是只使用一个统一变量来说明是否使用该属性,但我想知道 GLSL 中是否有任何内置的东西可以做到这一点?

0 投票
1 回答
1829 浏览

opengl-es - GLSL Shader - 2D 对象的 Coverflow 反射

我想编写一个着色器来创建类似于用于coverflows的图像反射。

但是这个着色器正在创建以下内容: 当前结果 而且我不知道如何水平“翻转”图像,我在旋转矩阵中尝试了很多不同的参数(我什至尝试使用所谓的“镜像矩阵”)但我不知道如何在原始图像的底部反映图像。

0 投票
1 回答
785 浏览

android - OpenGL ES 顶点着色器不会用函数编译

当我尝试在 Galaxy S(PowerVR SGX540,Android)上编译下面的简化顶点着色器时,它不会编译并且没有给出错误。只是“编译失败”。在日志中。

但是,当我将功能块移动到主功能中时,它编译得很好:

在桌面上,两者都可以编译。我不明白,为什么它会这样。谁能解释一下还是系统内部的错误?

0 投票
1 回答
960 浏览

opengl - 是否可以在顶点着色器中循环第二个 VBO?

所以,假设我有两个顶点缓冲区。一个描述我想要绘制的实际形状,另一个能够影响第一个。

所以,我真正想做的是这样的:

我可能想做的事情可能是重力,即 second_one 中的每个点都尝试将点拖得更靠近它等等,然后在调整点之后,应用矩阵以获得其实际位置。

我真的很惊讶它是可能的,或者接近它的东西。但重点是能够使用第二个 VBO,或者让它成为 vec3 类型的制服,让我可以访问它。

0 投票
2 回答
2728 浏览

opengl-es - GLSL Shader - 如何计算纹理的高度?

这个问题中,我询问了如何创建“镜像”纹理,现在我想将这个“镜像”图像在 y 轴上围绕图像的高度向下移动。我用不同的 HEIGHT 值尝试了类似的方法,但我找不到合适的解决方案:

0 投票
4 回答
5182 浏览

opengl - GLSL中的气缸冒名顶替者

我正在开发一个用于分子 3D 可视化的小工具。对于我的项目,我选择像“Brad Larson”先生用他的苹果软件“ Molecules ”所做的那样做一件事。一个链接,您可以在其中找到所用技术的小型演示:Brad Larsson 软件演示

为了完成我的工作,我必须计算球体冒名顶替者圆柱冒名顶替者

目前,我已经在另一个教程Lies and Impostors的帮助下成功完成了“Sphere Impostor”

总结一下球体冒名顶替的计算:首先我们将“球体位置”和“球体半径”发送到“顶点着色器”,这将在相机空间中创建一个始终面向相机的正方形,然后我们发送我们的正方形到片段着色器,我们使用简单的光线追踪来查找正方形的哪个片段包含在球体中,最后我们计算片段的法线和位置来计算光照。(另一件事我们还编写了 gl_fragdepth 来为我们的冒名顶替球体提供良好的深度!)

但是现在我在计算圆柱体冒名顶替者时受阻,我尝试在球体冒名顶替者和圆柱体冒名顶替者之间做一个平行,但我什么也没找到,我的问题是对于球体来说这很容易,因为球体是不管我们怎么看总是一样的,我们总是看到同样的东西:“一个圆”,另一件事是球体是由数学完美定义的,然后我们可以很容易地找到计算照明的位置和法线,并创建我们的骗子。

对于圆柱体,它不是一回事,我没有找到可以用作“圆柱体冒名顶替者”的形式建模的提示,因为圆柱体根据我们看到的角度显示出许多不同的形式!

所以我的要求是向您询问我的“冒名顶替者”问题的解决方案或指示。

0 投票
1 回答
319 浏览

glsl - 这个顶点着色器中的数据来自哪里?

我正在尝试为 Open GL ES 2.0 学习 GLSL。我已经查看了教程,但解释中显然缺少一些东西,因为它完全没有意义。拿下面的代码。这是从官方 OpenGL ES 2.0 参考卡中提取的。

这应该是顶点着色器。

问题 1:什么都没有初始化。一开始列出了 8 个变量/对象,没有一个被初始化。所以我们有 8 个空变量/对象。

问题2:初始化的变量/对象是使用前面8个空变量/对象初始化的。太好了,所以现在一切都是空的......

问题 3:函数没有传递任何内容。这怎么能遮蔽任何东西是我无法理解的,它什么也不进,也不出什么。它所涉及的唯一可能产生影响的是 gl_Position ,它显然是某种特殊的输出变量。但它只取决于 mvp_matrix 和 a_vertex 那么其他的东西有什么用呢?

这不仅仅是这个例子,这是我迄今为止找到的所有例子。我不明白如何声明一堆变量,不使用其中的大部分,然后在整个地方传递/分配空对象可以做任何事情。

0 投票
1 回答
652 浏览

opengl - GLSL 顶点着色器编译时不显示

我正在尝试实现 phong 着色无济于事。我正在一点一点地构建着色器(这本身可能是一个问题),但这就是我目前所处的位置。我希望这会将我的结果(犹他茶壶)输出为黑色背景上的白色图像。当我从顶点着色器中删除第 18 行时,它会正确执行此操作,但是当该行存在时,没有输出,也没有错误。有任何想法吗?

片段着色器:

顶点着色器:

值得一提的是 normal 和 normalModelView 目前没有设置。我之前曾尝试过启用它们以获得类似的结果。我的理解是它们应该设置为默认值。