C++ OpenGL着色器不会绘制
因此,最近我开始观看一个关于我的诅咒的视频,但当我说到着色器时,我遇到了一个问题,这是因为制作着色器或定义着色器时遇到了问题:C++ OpenGL着色器不会绘制,c++,opengl,shader,glfw,glew,C++,Opengl,Shader,Glfw,Glew,因此,最近我开始观看一个关于我的诅咒的视频,但当我说到着色器时,我遇到了一个问题,这是因为制作着色器或定义着色器时遇到了问题: #include iostream #define GLEW_STATIC #include GL/glew.h #include GLFW/glfw3.h const GLint WIDTH = 800, HEIGHT = 600; //here start the shaders def/creation const GLchar *vertexShader
#include iostream
#define GLEW_STATIC
#include GL/glew.h
#include GLFW/glfw3.h
const GLint WIDTH = 800, HEIGHT = 600;
//here start the shaders def/creation
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"
"}";
const GLchar *fragmentShaderSource =
"#version 330 core\n"
"out vec4 color;\n"
"void main( )\n"
"}\n"
"color = vec4( 1.0f, 0.5f, 0.2f, 1.0f );\n"
"}";
//here it ends
//more code down here
//....
//....
之后,我在控制台中得到的(另一个代码得到cmd上的错误行)是:
错误::着色器::顶点::编译失败
0(6):错误C0000:语法错误,意外的“}”,应为“,”或“;”在标记“}”处
错误::着色器::片段::编译失败
0(4):错误C0000:语法错误,意外的“}”,应为“,”或“;”在标记“}”处
错误::着色器::程序::链接失败
顶点信息
0(6):错误C0000:语法错误,意外的“}”,应为“,”或“;”在标记“}”(0):错误C2003:链接的选项不兼容 片段信息 0(4):错误C0000:语法错误,意外的“}”,应为“,”或“;”在标记“}”
(0):错误C2003:链接的选项不兼容 我知道支持着色器没有问题,因为我实际上可以运行3.0着色器,在我定义着色器的代码中可以有什么 编辑: 好吧,对不起,如果我用这个问题打扰了别人,原因是 第16行 错误在于:
“gl\u Position=vec4(Position.x,Position.y,Position.z,1.0)\n”
右翼呢
“gl_Position=vec4(Position.x,Position.y,Position.z,1.0);\n”
是的,这个符号;XD
在第一线
23
错误的是“}\n”
和右边的“{\n”
这只是我的一个朋友
很抱歉打扰您的顶点着色器缺少分号,并且您的片段着色器在打开
main
函数时使用了错误的大括号
const GLchar *vertexShaderSource =
"#version 330 core\n"
"layout ( location = 0 ) in vec3 position;\n"
"void main( )\n"
"{\n"
//=============================================Mistake is here↓
"gl_Position = vec4( position.x, position.y, position.z, 1.0 )\n"
//===============================================================
"}";
const GLchar *fragmentShaderSource =
"#version 330 core\n"
"out vec4 color;\n"
"void main( )\n"
//↓Mistake======================================
"}\n"
//==============================================
"color = vec4( 1.0f, 0.5f, 0.2f, 1.0f );\n"
"}";
修复这两个错误,代码就会正常工作
也可以,你需要的唯一的显式新行是在
)在;
…-\u-如果这样做了一半,它可能是另一个分号或其他东西,你必须在gl_Position=vec4(Position.x,Position.y,Position.z,1.0)
之后的着色器片段中使用一个开放的曲线括号void main()
{/code>,而不是一个封闭的
@rabbi76在我看到所有评论之前,我就开始写答案了。不管怎样,你都不应该因为这个原因回答评论中的问题。我建议使用。这个问题是离题的,因为它是一个简单的印刷错误。谢谢你花时间回答,我终于在你说之前完成了还是谢谢你