1
我學習a tutorial使用這種着色器:着色器程序到節點+片段着色器
struct VSInput
{
vec3 Position;
vec2 TexCoord;
vec3 Normal;
};
interface VSOutput
{
vec3 WorldPos;
vec2 TexCoord;
vec3 Normal;
};
uniform mat4 gWVP;
uniform mat4 gWorld;
shader VSmain(in VSInput VSin:0, out VSOutput VSout)
{
gl_Position = gWVP * vec4(VSin.Position, 1.0);
VSout.TexCoord = VSin.TexCoord;
VSout.Normal = (gWorld * vec4(VSin.Normal, 0.0)).xyz;
VSout.WorldPos = (gWorld * vec4(VSin.Position, 1.0)).xyz;
};
struct FSOutput
{
vec3 WorldPos;
vec3 Diffuse;
vec3 Normal;
vec3 TexCoord;
};
uniform sampler2D gColorMap;
shader FSmain(in VSOutput FSin, out FSOutput FSout)
{
FSout.WorldPos = FSin.WorldPos;
FSout.Diffuse = texture(gColorMap, FSin.TexCoord).xyz;
FSout.Normal = normalize(FSin.Normal);
FSout.TexCoord = vec3(FSin.TexCoord, 0.0);
};
program GeometryPass
{
vs(410)=VSmain();
fs(410)=FSmain();
};
這對延遲呈現幾何着色器傳遞。 我現在試圖將它移植到基於QT的程序中,但我的代碼只能分別加載頂點和片段着色器。
有人可以給我一個關於如何將上面的代碼拆分成2個可加載着色器的建議嗎?
另外,據我所知,這個着色器需要OpenGL核心4.1.0。這是非常必要的還是有其他方法可以使用較低級別達到相同的結果(比如說3.3)?
無效GLSL。這很接近,但它有一些有趣的額外的東西,必須與它所寫的特定環境相關。 – 2013-05-02 21:17:00
它裝有[glfx](https://code.google.com/p/glfx/),我不想將它拖入我的代碼中。必須有一種方法才能回到有效且乾淨的GLSL代碼。我只是不知道如何:(任何幫助? – 2013-05-02 21:20:24