Just My Life & My Work

[GLSL] Setup Example

Shader和Program的關係可以從以下程式碼中瞭解,流程邏輯先搞懂,之後的學習就能得心應手!

設定Shaders以OpenGL 2.0 syntax寫法如下,p, v, g, and f是全域變數:

void setShaders() {

    char *vs,*gs, *fs;

    // Create shader handlers
    v = glCreateShader(GL_VERTEX_SHADER);
    g = glCreateShader(GL_GEOMETRY_SHADER);
    f = glCreateShader(GL_FRAGMENT_SHADER);

    // Read source code from files
    vs = textFileRead("example.vert");
    gs = textFileRead("example.geom");
    fs = textFileRead("example.frag");

    const char * vv = vs;
    const char * gg = gs;
    const char * ff = fs;

    // Set shader source
    glShaderSource(v, 1, &vv,NULL);
    glShaderSource(g, 1, &gg,NULL);
    glShaderSource(f, 1, &ff,NULL);

    free(vs);free(gs);free(fs);

    // Compile all shaders
    glCompileShader(v);
    glCompileShader(g);
    glCompileShader(f);

    // Create the program
    p = glCreateProgram();

    // Attach shaders to program
    glAttachShader(p,v);
    glAttachShader(p,g);
    glAttachShader(p,f);

    // Link and set program to use
    glLinkProgram(p);
    glUseProgram(p);
}

Setup

vertex and fragment shader

參考:GLSL Core Tutorial – SetupGLSL Tutorial von Lighthouse3D

Comments on: "[GLSL] Setup Example" (1)

  1. […] shader和fragment shader溝通,詳情可見Setup Example。若想要直接來寫shader,跳過OpenGL […]

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: