glsl相关内容

GLSL 中的多种纹理 - 只有一种有效

我的问题是在 GLSL 着色器中可以访问多个纹理.这是我正在做的: 着色器: uniform sampler2D sampler0;统一采样器2D采样器1;均匀的浮动混合;无效主(无效){vec2 坐标 = gl_TexCoord[0];vec4 col = texture2D(sampler0, coords);vec4 col2 = texture2D(sampler1, coords ..
发布时间:2021-12-19 17:59:53 其他开发

如何在 glsl 支持中使用#include ARB_shading_language_include

我不想使用 #include 宏在 glsl 中包含着色器文件,我听说有一个 ARB_shading_language_include extension 支持 #include 宏.有没有人可以给我一个代码片段,展示如何使用 #include 宏? 解决方案 关于 shading_language_include不是.它不是“我#include 一个文件 来自磁盘".OpenGL 不知道 ..
发布时间:2021-12-19 17:58:26 其他开发

你如何在 OpenGL 中获得模型视图和投影矩阵?

我正在尝试使用 OpenGL 着色语言 (GLSL) 1.5 版来制作顶点和几何着色器. 我了解到,在 GLSL 1.5 版中,诸如 gl_ModelViewProjectionMatrix 之类的内置变量已被弃用,因此您必须手动传入它们.如果我已经设置了模型视图和投影矩阵(例如使用 gluLookAt 和 gluPerspective),那么我如何让矩阵传递到顶点和几何着色器中?我已经做了 ..
发布时间:2021-12-19 17:57:52 其他开发

为什么统一变量在 GLSL 中不起作用?

我目前正在尝试使用 LWJGL 创建一个用于后处理目的的模糊着色器,但偶然发现了一个问题. 我想改变的 Uniforms 是分辨率、半径和模糊方向(水平或垂直,所以我可以对两个方向使用一个着色器).我将输出渲染到 FrameBuffer,然后渲染到屏幕上.但不知何故,纹理只是黑色.当我使用常量值而不是uniforms 时,它完全按预期工作,所以问题一定是uniform 变量. 这是我的 ..
发布时间:2021-12-19 17:55:29 其他开发

GLSL - 使用自定义输出属性而不是 gl_Position

我目前正在使用着色器 (3.3) 学习 OpenGL.有一件事我似乎无法解决.我已经读过,在 OpenGL 3+ 中不推荐使用 gl_Position 和 gl_FragCoords 等内置变量,因此我想使用自己的输出变量. 所以不是这样: #version 330\nvec2 i_position 中的布局(位置 = 0);出 vec4 o_position;无效主(){gl_Posit ..
发布时间:2021-12-19 17:52:59 其他开发

使用 imageAtomicCompSwap 的 GLSL 每像素自旋锁

OpenGL 红皮书版本 9 (OpenGL 4.5) 示例 11.13 是简单的每像素互斥.它在 do {} while() 循环中使用 imageAtomicCompSwap 来获取每个像素的锁,以防止在对应于同一像素的像素着色器调用之间同时访问共享资源坐标. layout (binding = 0, r32ui) 统一 volatile 相干 uimage2D lock_image;无效主 ..
发布时间:2021-12-19 17:50:12 其他开发

OS X 上的 GLUT 和 OpenGL 3.2 核心配置文件

是否可以使用核心配置文件在 OS X Lion 或 OS X Mountain Lion 上使用 GLUT(因此我可以使用 GLSL 1.50)? 我可以使用内置的 GLUT 还是需要使用第三方库,例如 FreeGLUT? 是否有任何简单的“Hello world"应用程序可用于带有 XCode 项目或生成文件的 OS X? 解决方案 您至少需要 Mac OS X Lion(O ..
发布时间:2021-12-19 17:49:09 其他开发

为什么 GL 为您将 `gl_Position` 除以 W 而不是让您自己做?

注意:我了解基本的数学.我知道各种数学库中典型的 perspective 函数会生成一个矩阵,该矩阵将 z 值从 -zNear 转换为 -zFar 回 -1 到 +1,但前提是结果除以 w 具体问题是 GPU 为您执行此操作而不是您必须自己执行此操作可以获得什么? 换句话说,假设 GPU 没有将 gl_Position 神奇地除以 gl_Position.w 而是您必须像在 中那样手 ..
发布时间:2021-12-19 17:47:07 其他开发

在 OpenGL GLSL 中从 RGB 到 HSV

我需要从 RGB 颜色空间传递到 HSV .. 我在互联网上搜索并找到了两种不同的实现,但它们给了我不同的结果: 答: precision mediump float;vec3 rgb2hsv(float r, float g, float b) {浮动 h = 0.0;浮动 s = 0.0;浮动 v = 0.0;float min = min( min(r, g), b );float ..
发布时间:2021-12-19 17:46:44 其他开发

在片段着色器中,为什么我不能使用平面输入整数来索引 sampler2D 的统一数组?

我想指定渲染精灵数组时要使用的纹理.所以我在它们的顶点数据中放置了一个纹理索引,并将它作为一个平面值从我的顶点着色器传递到我的片段着色器,但不能像预期的那样使用它来索引采样器数组,因为编译器认为它是“非-常数".相反,我不得不求助于下面令人作呕的代码.谁能解释一下这里发生了什么? const int numTextures = 2;统一的 sampler2D 纹理 [numTextures];在 ..
发布时间:2021-12-19 17:40:06 其他开发

为什么精灵不能在 OpenGL 中渲染?

我正在尝试在 OpenGL 中渲染一个 2D(屏幕协调)精灵.然而,当我编译它时,它没有出现.我看到代码很好(甚至没有任何着色器编译错误或任何其他错误).我还设置了矩阵(我怀疑这是导致问题的原因,这就是混淆的开始!!) 顺便说一下,这里是源代码(没有调试,简短一点):- main.cpp //在此处包含所有必需的标头...#include #define GLEW_STATIC#in ..
发布时间:2021-12-19 17:39:05 C/C++开发

GLSL 固定功能片段程序替换

当使用 OpenGL 固定函数管道进行顶点设置时,片段程序如何与固定函数顶点设置兼容?我想这通常取决于光源和纹理层等的数量.那么例如,一个简单的非纹理单光源 goraud 着色片段程序如何替代 GL 的固定功能着色器? 解决方案 虽然 Gouraud shading计算顶点着色器中的光,Phong shading 计算片段着色器中的光. 标准的 OpenGL 光照模型是一个 Gour ..
发布时间:2021-12-19 17:36:40 其他开发

为什么用模型视图矩阵的逆矩阵的转置来变换法线?

我正在研究一些着色器,我需要转换法线. 我在几篇教程中读到的转换法线的方式是将它们与模型视图矩阵的逆矩阵的转置相乘.但我找不到解释为什么会这样,这背后的逻辑是什么? 解决方案 看看这个教程: https://paroj.github.io/gltut/Illumination/Tut09%20Normal%20Transformation.html 您可以想象,当球体的表 ..
发布时间:2021-12-19 17:35:06 其他开发

法线贴图严重错误

我尝试在我的 opengl 应用程序中实现法线贴图,但我无法让它工作. 这个是漫反射贴图(我添加了棕色)和这个是法线贴图. 为了获得切线和双切线(在其他地方称为副法线?)向量,我对网格中的每个三角形运行此函数: void getTangent(const glm::vec3 &v0, const glm::vec3 &v1, const glm::vec3 &v2,const glm ..
发布时间:2021-12-19 17:34:26 C/C++开发

如何在片段着色器中使用 gl_FragCoord.z 在现代 OpenGL 中线性渲染深度?

我阅读了大量有关使用片段着色器获取深度的信息. 比如 http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=234519 但我仍然不知道 gl_FragCoord.z 是否是线性的. GLSL 规范说它的范围是 [0,1] 在屏幕空间中,没有提到它是否是线性的. 我认为线性 ..
发布时间:2021-12-19 17:33:51 其他开发

我应该在统一缓冲区或着色器存储缓冲区对象中使用 `vec3` 吗?

vec3 类型是一个非常好的类型.它只占用 3 个浮点数,而我的数据只需要 3 个浮点数.我想在 UBO 和/或 SSBO 的结构中使用一个: layout(std140) 统一 UBO{vec4 数据1;vec3 数据2;浮动数据3;};布局(std430)缓冲区SSBO{vec4 数据1;vec3 数据2;浮动数据3;}; 然后,在我的 C 或 C++ 代码中,我可以这样做来创建匹配的数据 ..
发布时间:2021-12-19 17:33:28 其他开发

现代 OpenGL:VBO、GLM 和矩阵堆栈

在搜索和阅读有关 Modern OpenGL 以升级我现有的项目后,我有点困惑,因为我的 3D 框架基于 OpenGL 2.1. 所以,据我所知... 我们需要从顶点、索引、法线、颜色、紫外线等生成我们的顶点缓冲区对象. 然后我们可以使用 GLM 进行矩阵变换,我们只使用 VBO 来创建或操作网格,最后我们像这样将所有内容传递到 GLSL 顶点着色器中... glm::mat4 ..
发布时间:2021-12-19 08:12:35 C/C++开发

GCC、字符串化和内联 GLSL?

我想使用宏字符串化内联声明 GLSL 着色器字符串: #define STRINGIFY(A) #Aconst GLchar* vert = STRINGIFY(#版本 120\n属性 vec2 位置;无效主(){gl_Position = vec4( 位置, 0.0, 1.0 );}); 使用 VS2010 构建并运行良好,但无法在 gcc 上编译: 错误:预处理指令无效#version ..
发布时间:2021-12-18 23:08:36 C/C++开发

iOS GLSL.有没有办法使用 GLSL 着色器创建图像直方图?

在 StackOverflow 的其他地方,有人问了一个关于深度缓冲区直方图的问题 - 创建深度缓冲区带有 GLSL 的直方图纹理. 我正在编写一个 iOS 图像处理应用程序,对这个问题很感兴趣,但不清楚所提供的答案.那么,是否可以通过 GLSL 使用 GPU 创建图像直方图? 解决方案 是的.这显然不是最好的方法,但它确实是 iOS 中最好的方法,因为不支持 OpenCL.您将失去 ..
发布时间:2021-12-18 11:40:03 移动开发