我很高兴能够使用c ++开始在OpenGL中编写一些东西.
任何人都可以在此列出应该安装哪些工具来启动此过程.
即
IDE编译器OpenGL下载等?
更新:因为我马上就需要一些东西,所以我创建了一个简单的着色器包装器来完成我需要的东西.你可以在这里找到它:GitHub上的ShaderManager.请注意,它是为Objective-C/iOS设计的,因此对每个人都没有用.如果您对设计改进有任何建议,请告诉我们!
原始问题:
我是新手使用GLSL着色器.我对GLSL语言和OpenGL界面非常熟悉,但是我在设计一个简单的API时遇到了麻烦,通过它可以使用着色器.
用于与着色器交互的OpenGL C接口似乎很麻烦.我似乎无法在网上找到任何涵盖这类内容的API设计的教程.
我的问题是:任何人都有一个好的,简单的API设计或模式来包装OpenGL着色器程序API吗?
采用以下简单示例.假设我有一个顶点着色器,它只是模拟固定功能,还有两个片段着色器 - 一个用于绘制平滑矩形,另一个用于绘制平滑圆.我有以下文件:
Shader.vsh : Simple vertex shader, with the following inputs/outputs:
-- Uniforms: mat4 Model, mat4 View, mat4 Projection
-- Attributes: vec4 Vertex, vec2 TexCoord, vec4 Color
-- Varying: vec4 vColor, vec2 vTexCoord
Square.fsh : Fragment shader for drawing squares based on tex coord / color
Circle.fsh : Fragment shader for drawing circles based on tex coord / color
Run Code Online (Sandbox Code Playgroud)
现在使用这些的标准方法是什么?我是否将上述着色器链接到两个OpenGL着色器程序中?那是:
Shader.vsh + Square.fsh = SquareProgram
Shader.vsh + Circle.fsh = …Run Code Online (Sandbox Code Playgroud) 好像我不能编译我的GLSL着色器.偶尔(主要是在编辑文件之后),编译时出现以下错误:
----- SRC ----- (150 B)
#version 330 core
uniform mat4 mvpMatrix;
in vec4 vertexPosition_modelspace;
void main() {
gl_Position = mvpMatrix * vertexPosition_modelspace;
}
gp!
----- END -----
SimpleTransform.vertexshader:Vertex shader failed to compile with the following errors:
ERROR: 0:10: error(#132) Syntax error: 'gp' parse error
ERROR: error(#273) 1 compilation errors. No code generated
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我发誓该文件不包含那个尴尬的gp!部分.不过我用猫调查过它
#version 330 core
uniform mat4 mvpMatrix;
in vec4 vertexPosition_modelspace;
void main() {
gl_Position = mvpMatrix * vertexPosition_modelspace;
}
Run Code Online (Sandbox Code Playgroud)
而且更少 …