簡體   English   中英

OpenGL - 着色器測試

[英]OpenGL - shader test

我想創建一個簡單的工具來測試我的着色器。 它應該嘗試編譯它們,並從驅動程序輸出任何消息。 但是,我遇到了麻煩:它是段錯誤的。 這是代碼:

#include <stdlib.h>

#include <GL/glew.h>
#include <GL/gl.h>


/* Test shader */
static const GLchar * vertexSource =
    "#version 150 core\n"
    "in vec2 position;"
    "in vec3 color;"
    "out vec3 Color;"
    "void main() {"
    "   Color = color;"
    "   gl_Position = vec4(position, 0.0, 1.0);"
    "}";


int main(void)
{
    GLuint vertexShader;

    glewExperimental = GL_TRUE;
    glewInit();

    vertexShader = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(vertexShader, 1, &vertexSource, NULL);
    glCompileShader(vertexShader);
    glDeleteShader(vertexShader);

    return EXIT_SUCCESS;
}

除了Segmentation fault不會發出其他消息。 任何人都可以解釋發生了什么?

PS:FWIW,我在Radeon HD 3200,GCC版本4.8.2上使用R600g Mesa(10.0)驅動程序。

在嘗試調用glewInit()或任何其他GL相關函數之前,創建GL上下文並使其成為當前上下文。

您可以使用FreeGLUT創建窗口和關聯的GL上下文:

#include <GL/glew.h>
#include <GL/freeglut.h>

int main(int argc, char **argv)
{
    glutInit( &argc, argv );
    glutInitWindowSize( 600, 600 );
    glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
    glutInitContextVersion( 3, 2 );
    glutInitContextProfile( GLUT_CORE_PROFILE );
    glutCreateWindow( "GLUT" );

    glewExperimental = GL_TRUE;
    glewInit();

    // attempt shader compile here...

    glutMainLoop();
    return 0;
}

暫無
暫無

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

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