gpt4 book ai didi

c - OpenGL - 着色器测试

转载 作者:太空狗 更新时间:2023-10-29 15:29:24 25 4
gpt4 key购买 nike

我想创建一个简单的工具来测试我的着色器。它应该尝试编译它们,并输出来自驱动程序的任何消息。但是,我遇到了麻烦:它会出现段错误。这是代码:

#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 之外没有其他消息被发出。谁能解释发生了什么?

P.S.:FWIW,我在 Radeon HD 3200 上使用 R600g Mesa (10.0) 驱动程序,GCC 版本 4.8.2。

最佳答案

在尝试调用 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;
}

关于c - OpenGL - 着色器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20807737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com