Ste*_*son 5 c++ opengl shader glsl vertex-shader
我正在尝试学习如何编写OpenGL着色器.为什么在我的机器上运行时此代码分段会出错?(我正在使用Ubuntu 10.04,我称之为shader.cpp.)
#include <GL/glut.h>
#include <iostream>
using namespace std;
int
main (int argc, char **argv)
{
GLuint myVertexShader = glCreateShader(GL_VERTEX_SHADER);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下Makefile编译它:
CC=g++
CFLAGS=-c -Wall -DGL_GLEXT_PROTOTYPES
LDFLAGS= -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm
SOURCES=shader.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=shader
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm -rf *o $(EXECUTABLE)
check-syntax:
$(CC) -o nul -S ${CHK_SOURCES}
Run Code Online (Sandbox Code Playgroud)
它似乎是调用glCreateShader的行上的分段错误.我没有运气找到这个问题的根源.我是初学者.谢谢!
注意:此代码表示的是我第一次尝试使用OpenGL编写一个简单的着色器.如果一切都搞错了,请随意发布一些有效的代码.我真正想要的是得到一些我可以编译和运行的东西.
mcm*_*mcc 10
您无法在真空中创建着色器.必须使用有效的RenderContext当前创建它.事实上,没有当前的RenderContext,在OpenGL中可以做的很少.(创建一个RenderContext留给读者练习)
另一件需要考虑的事情是您机器上的GL驱动程序可能不支持着色器.仅仅因为函数符号解析并不意味着它可以完成.这是您需要RC的部分原因 - 因此GL运行时可以确定RC所面向的硬件支持哪些功能.
http://www.opengl.org/wiki/Detecting_the_Shader_Model
| 归档时间: |
|
| 查看次数: |
3844 次 |
| 最近记录: |