小编cha*_*rlt的帖子

OpenGL GLSL 将颜色作为整数发送到着色器以分解为 vec4 RGBA

我可以将颜色作为 4 个浮点发送到着色器 - 没问题。但是我想将其作为整数(或无符号整数,并不重要,重要的是 32 位)发送,并在着色器上的 vec4 中分解。

我使用 OpenTK 作为 OpenGL 的 C# 包装器(尽管它应该只是一个直接包装器)。

让我们考虑最简单的着色器之一,其顶点包含位置(xyz)和颜色(rgba)。

顶点着色器:

#version 150 core

in vec3 in_position;
in vec4 in_color;
out vec4 pass_color;
uniform mat4 u_WorldViewProj;

void main()
{
    gl_Position = vec4(in_position, 1.0f) * u_WorldViewProj;
    pass_color = in_color;
}
Run Code Online (Sandbox Code Playgroud)

片段着色器:

#version 150 core

in vec4 pass_color;
out vec4 out_color;

void main()
{
    out_color = pass_color;
}
Run Code Online (Sandbox Code Playgroud)

让我们创建顶点缓冲区:

public static int CreateVertexBufferColor(int attributeIndex, int[] rawData)
{
    var bufferIndex = GL.GenBuffer();
    GL.BindBuffer(BufferTarget.ArrayBuffer, bufferIndex);
    GL.BufferData(BufferTarget.ArrayBuffer, sizeof(int) …
Run Code Online (Sandbox Code Playgroud)

opengl glsl vertex-buffer vertex-attributes

7
推荐指数
1
解决办法
5888
查看次数

标签 统计

glsl ×1

opengl ×1

vertex-attributes ×1

vertex-buffer ×1