0

こんにちは、誰かが glsl から c# への変換を手伝ってくれませんか? 私は glsl が初めてで、本当に多くの助けが必要です! よろしくお願いします。:)

#version 120

uniform sampler2D tex;

void main()
{
 vec4 pixcol = texture2D(tex, gl_TexCoord[0].xy);
 vec4 colors[3];
 colors[0] = vec4(0.,0.,1.,1.);
 colors[1] = vec4(1.,1.,0.,1.);
 colors[2] = vec4(1.,0.,0.,1.);
 float lum = (pixcol.r+pixcol.g+pixcol.b)/3.;
 int ix = (lum < 0.5)? 0:1;
 vec4 thermal = mix(colors[ix],colors[ix+1],(lum-float(ix)*0.5)/0.5);
 gl_FragColor = thermal;
}
4

2 に答える 2

3

OpenGL API で直接使用されるため、使用するために GLSL を c# に変換する必要はありません。c# 用の OpenGl ラッパーがいくつかあります。すべてがシェーダーをサポートしているかどうかはわかりませんが、openTk は確かにサポートしています。例は次のとおりです。

using (StreamReader sr = new StreamReader("vertex_shader.glsl"))
{
    GL.ShaderSource(m_shader_handle, sr.ReadToEnd());
}

シェーダーは、ファイルから、または文字列から直接ロードできます。

string shader = "void main() { // your shader code }"
GL.ShaderSource(m_shader_handle, shader);
于 2013-10-03T07:01:34.863 に答える