glsl相关内容

OpenGL:3D 中的粗而光滑/无断线*

我有一个类似 3D CAD 的应用程序,为此我使用了 OpenGL 包装器库 (OpenSceneGraph).对于应用程序,我正在尝试提出如何在 3D 中渲染粗而平滑的线条的最佳策略. 厚实和光滑我的意思是: 线宽可以大于 OpenGL 的最大线宽值(在我的机器上似乎是 10.f) 在组合多段线时,我想避免出现“断线"(见下图示例) 目前我使用 GL_LINE_STRIP_A ..
发布时间:2021-12-19 18:29:27 其他开发

着色器位置 vec4 或 vec3

我已经阅读了一些关于 GLSL 的教程.在某些位置属性是某些 vec3 中的 vec4.我知道矩阵运算需要一个 vec4,但是否值得发送一个额外的元素?发送 vec3 然后在着色器 vec4(position, 1.0) 中投射不是更好吗?内存中的数据更少 - 会更快吗?或者我们应该打包一个额外的元素来避免强制转换? 有什么建议应该更好吗? layout(location = 0) 在 v ..
发布时间:2021-12-19 18:26:13 其他开发

OpenGL:如何渲染完美的矩形渐变?

我可以只用一个三角形并为每个角使用 glColor 来渲染三角形渐变. 但是如何渲染完美的矩形渐变?我试过一个四边形,但中间会出现难看的接缝.我也尝试过 2x2 大小的纹理,好像应该这样做:从每个角落适当混合,但是当拉伸太多时纹理采样精度变得不精确(我开始看到大于 1x1 大小的像素). 是否有某种方法可以在着色器中计算此值? -- 编辑:图像链接已损坏(已删除). ..
发布时间:2021-12-19 18:25:42 C/C++开发

如何设计一个简单的 GLSL 包装器供着色器使用

更新:因为我马上需要一些东西,所以我创建了一个简单的着色器包装器来完成我需要的事情.您可以在此处找到它:GitHub 上的 ShaderManager.请注意,它是为 Objective-C/iOS 设计的,因此可能对所有人都没有用.如果您对设计改进有任何建议,请告诉我! 原始问题: 我是使用 GLSL 着色器的新手.我对 GLSL 语言和 OpenGL 接口非常熟悉,但是我在设计一个 ..
发布时间:2021-12-19 18:22:07 移动开发

我应该在 GPU 上还是在 CPU 上计算矩阵?

我应该更喜欢在 CPU 还是 GPU 上计算矩阵? 假设我有以下矩阵 P * V * M ,我应该在 CPU 上计算它们以便将最终矩阵发送到 GPU (GLSL) 还是应该发送这三个矩阵矩阵分开到 GPU 以便 GLSL 可以计算最终矩阵? 我的意思是在这种情况下 GLSL 必须为每个顶点计算 MVP 矩阵,因此在 CPU 上预先计算它可能会更快. 但假设 GLSL 只需要计算一 ..
发布时间:2021-12-19 18:20:58 其他开发

在 OpenGL 3.2 中绘制全屏四边形的最佳方法是什么?

我正在片段着色器中进行光线投射.为此,我可以想到几种方法来绘制全屏四边形.要么在投影矩阵设置为单位矩阵的情况下在剪辑空间中绘制一个四边形,要么使用几何着色器将一个点变成一个三角形条.前者使用立即模式,在 OpenGL 3.2 中已弃用.后者我出于新意使用,但它仍然使用立即模式来绘制一个点. 解决方案 您可以发送两个三角形创建一个四边形,它们的顶点属性分别设置为 -1/1. 您不需要将 ..
发布时间:2021-12-19 18:20:34 其他开发

GLSL 着色器的正确文件扩展名是什么?

我正在学习 glsl 着色,并且遇到了不同的文件格式.我见过有人给他们的顶点和片段着色器 .vert 和 .frag 扩展.但我也看到了 .vsh 和 .fsh 扩展,甚至两个着色器都在一个 .glsl 文件中.所以我想知道是否有标准的文件格式,或者哪种方式是“正确的"? 解决方案 Khronos 创建的 glslang 编译器基于扩展对着色器阶段做出了假设,但除此之外并没有标准扩展(而且 ..
发布时间:2021-12-19 18:18:46 其他开发

问题理解 OpenGL 中的光照

我在理解光照在 OpenGL 中的工作方式时遇到了一些问题(尤其是理解预定义的变量.是否有它们的列表?).我一直在我的 Vertex Shader 文件中乱七八糟地为我的 shpere 着色.所以我设法遮蔽它,但我不知道我做了什么.代码如下: 顶点着色器: #version 330精密高浮点数;在 vec3 in_Position 中;//声明位置在 vec3 in_Color 中;//从 ..
发布时间:2021-12-19 18:18:03 其他开发

OpenGL 4.2 LookAt 矩阵仅适用于眼睛位置的 -z 值

我正在尝试理解和应用现代 OpenGL 矩阵变换.我已经阅读了很多不同的来源,但我不确定我到底做错了什么. 代码中也评论了我遇到的问题:如果我将 Matrix4.LookAt 的眼睛坐标设置为大于或等于 0 或小于 -2 的 z 值,则三角形不再可见. 谁能解释一下为什么?就我理解的方法而言,三角形应该只是从另一侧可见(明确禁用面部剔除不会改变任何东西). 另一件事很奇怪:如果我 ..
发布时间:2021-12-19 18:17:32 C#/.NET

OpenGL 忽略四边形并使它们成为三角形

这是我第二次制作游戏引擎,但我现在有点卡住了,因为我无法弄清楚为什么会发生这种情况,无论我发送什么对象,OpenGL 都只会在其上绘制一个白色三角形屏幕中央,像这样. 我什至从渲染器和相机对象上的上一个引擎中复制了我的旧代码,其行为仍然相同,所以我猜它与渲染脚本有关. 渲染器: Renderer2D::Renderer2D(const Shader& shader) {this->s ..
发布时间:2021-12-19 18:17:23 C/C++开发

接近 1 的纹理坐标表现得很奇怪

我使用 (Py)OpenGL 显示 256 色索引图像.我将着色器与包含调色板的一维纹理一起使用.这是片段着色器代码: #version 330统一的 sampler2D 纹理;统一的 sampler1D 调色板;无效主(){vec2 uv = gl_TexCoord[0].xy;vec4 颜色 = 纹理 2D(纹理,紫外线);gl_FragColor = texture1D(palette, ..
发布时间:2021-12-19 18:16:27 Python

OpenGL中`glEnableVertexAttribArray(GLuint index)`的目的是什么?

在调用 glVertexAttribPointer(GLuint index, ...) 之后,顶点属性默认被禁用,因为 文档 说 默认情况下,禁用所有客户端功能,包括所有通用顶点属性数组. 为什么我们必须使用额外的函数来启用它?有人可以说出一个案例,这在哪些地方有用吗? 在研究时,我了解到以下内容: 通过在 GLSL 或 glBindAttribLocation 中使用 ..
发布时间:2021-12-19 18:14:24 其他开发

Qt5 OpenGL GLSL 版本错误

我开始在 Qt 和着色器中使用 OpenGL(我有 OpenGL 经验,但还没有使用着色器) 我正在学习本教程:http://releases.qt-project.org/learning/developerguides/qtopengltutorial/OpenGLTutorial.pdf(Qt5 OpenGL 官方教程). 问题是,当我尝试运行我的程序时,出现黑屏并显示以下错误消 ..
发布时间:2021-12-19 18:14:16 C/C++开发

gl_PointSize 对应世界空间大小

如果你想渲染一个冒名顶替的几何体(比如一个球体),那么标准做法是使用两个三角形绘制它(比如通过传递一个顶点并使用几何着色器制作一个三角形条). 这很好,因为它允许相当简单地设置广告牌的范围:您直接计算实际的世界空间位置. 几何着色器可以交替输出点图元,我看不出有什么理由不这样做.唯一的问题是找到某种方法来缩放 gl_PointSize 以便获得这种效果. 我能找到的唯一先例是这个 ..
发布时间:2021-12-19 18:12:20 其他开发

如果未绑定,统一值是否保留在 GLSL 着色器中?

我正在编写一个程序,该程序对不同的图元使用两种不同的着色器.我的问题是:如果我绑定一个程序,给它发送统一变量,然后使用另一个着色器程序并返回到第一个,传递的统一值会保留吗?这是一些伪代码: glUseProgram(shader1);glUniform(shader1,...);//东西for(列表中的元素){如果(元素.类型= 1){glUseProgram(shader2);element. ..
发布时间:2021-12-19 18:10:13 C/C++开发

小牛队下的 OpenGL 4.1(?)

我刚刚将我的 MacBook Pro 升级到 Mavericks (MacOS 10.9),包括 Xcode.根据苹果的“OpenGL Capabilities Table",这个版本已经支持对于 OpenGL 4.1,但调用 glGetString(GL_VERSION) 返回“1.2"和我的 GLSL以“#version 330"开头的 3.30 着色器拒绝加载,说版本不受支持. 我需要 ..
发布时间:2021-12-19 18:08:48 其他开发

带有光线投射算法的体积渲染(使用 glsl)

我正在学习使用光线投射算法的体绘制.我在这里找到了一个很好的演示和教程.但问题是我有一个 ATI 显卡而不是 nVidia,这使我无法在演示中使用 cg 着色器,所以我想将 cg 着色器更改为 glsl 着色器.OpenGL的红皮书(7版)看过,但是对glsl和cg不熟悉.有谁可以帮我将演示中的 cg 着色器更改为 glsl?或者是否有使用光线投射(当然在 glsl 中)的最简单的体积渲染演示的任 ..
发布时间:2021-12-19 18:07:38 其他开发

GLSL gl_FragCoord.z 计算和设置 gl_FragDepth

所以,我有一个冒名顶替者(真正的几何体是一个立方体,可能被剪掉了,冒名顶替者的几何体是一个 Menger 海绵),我需要计算它的深度. 我可以很容易地计算在世界空间中的偏移量.不幸的是,我花了好几个小时都没能用它来扰乱深度. 我唯一能得到的正确结果是我去的时候: gl_FragDepth = gl_FragCoord.z 基本上,我需要知道 gl_FragCoord.z 是如何计算 ..
发布时间:2021-12-19 18:07:17 其他开发

为什么我的 OpenGL Phong 着色器表现得像平面着色器?

过去几周我一直在学习 OpenGL,但在实现 Phong 着色器时遇到了一些麻烦.尽管我使用了 smooth 限定符,但它似乎没有在顶点之间进行插值.我在这里错过了什么吗?为了在信用到期时给予信用,顶点和片段着色器的代码大量来自 OpenGL SuperBible 第五版.我强烈推荐这本书! 顶点着色器: #version 330在 vec4 vVertex 中;在 vec3 vNorma ..
发布时间:2021-12-19 18:06:08 其他开发