小编Vei*_*hen的帖子

如何在glsl中编写基本着色器?

所以当我学习OpenGL时,我偶然发现了与GLSL有关的问题.这是一本书的引用:

"我们需要做的第一件事是在着色器语言GLSL中编写顶点着色器,然后编译这个着色器,以便我们可以在我们的应用程序中使用它."

然后提供的源代码:

#version 330 core
layout (location=0)in vec3 position;
void main()
{
gl_Position=vec4(position.x, position.y,position.z,1.0);
};
Run Code Online (Sandbox Code Playgroud)

起初我很眩目.这不能写在我的.cpp文件中,因为它不像C一样.我知道我应该创建.glsl文件或其他东西,但书中没有具体说明.然后我找到了一个示例代码(这是用.cpp编写的):

//Shaders
const GLchar* vertexShaderSource = "#version 330 core\n"
"layout (location=0)in vec3 position;\n"
"void main()\n"
"{\n"
"gl_Position=vec4(position.x, position.y,position.z,1.0);\n"
"}\0";
Run Code Online (Sandbox Code Playgroud)

......确实有效.但为什么?是将字符串转换为文件然后以某种方式通过该方法读取glShaderSource();?这一切都没有在书中解释过.

我的问题:

- 这个方法如何使用字符串作为参数并读取代码?

- 这确实是一个冗长的方式.例如,我需要为每一行输入""和"\n".否则,没有'\n',它将是非常无组织和丑陋的.有替代方法吗?

任何帮助是极大的赞赏.

c++ opengl glsl

3
推荐指数
1
解决办法
676
查看次数

标签 统计

c++ ×1

glsl ×1

opengl ×1