簡體   English   中英

OpenGL着色器GLSL中的顏色按位移位

[英]Colour bit-wise shift in OpenGL shader GLSL

我將vec4傳遞給帶有xyz和顏色值的着色器,我嘗試將顏色分量按位移動到其自己的rg和b浮點數,但存在問題:

頂點着色器:

#version 150

in vec4 position;

out vec2 Texcoord;

uniform mat4 model;
uniform mat4 view;
uniform mat4 proj;

void main()
{
    Texcoord = vec2(position.w, position.w);
    gl_Position = proj * view * model * vec4(position.xyz, 1.0);
} 

片段着色器:

#version 150

in vec2 Texcoord;
out vec4 outColor;

uniform sampler2D tex;

void main()
{
    float data = Texcoord.r;
    float r = (data>> 16) & 0xff;
    float g = (data>> 8) & 0xff;
    float b = data & 0xff;
    outColor = vec4(r, g, b, 1.0);
}

錯誤:

Error compiling shader: 
0(11) : error C1021: operands to ">>" must be integral
0(12) : error C1021: operands to ">>" must be integral
0(13) : error C1021: operands to "&" must be integral

有什么想法我做錯了嗎?

好的,完成了:)

#version 150

in vec2 Texcoord;
out vec4 outColor;

uniform sampler2D tex;

vec3 unpackColor(float f) 
{
    vec3 color;
    color.r = floor(f / 65536);
    color.g = floor((f - color.r * 65536) / 256.0);
    color.b = floor(f - color.r * 65536 - color.g * 256.0);
    return color / 256.0;
}

void main()
{
    float data = Texcoord.r;
    vec3 unpackedValues = unpackColor(Texcoord.r);

    outColor = vec4(unpackedValues.bgr, 1.0);
}

我正在將4位格式傳遞到點雲中某個點的着色器xyz坐標,並且第4個值以浮點數進行了顏色編碼。 因此,我需要從浮動對象中提取rgb信息,以便為每個點賦予顏色。

謝謝大家的幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM