【发布时间】:2023-03-27 02:51:01
【问题描述】:
错误:
ERROR: 0:1: 'basicVertex120' : syntax error parse error
代码:
#version 120
attribute vec3 position;
attribute vec2 texCoord;
varying vec2 texCoord0;
uniform mat4 transform;
void main()
{
gl_Position = transform * vec4(position, 1.0);
texCoord0 = texCoord;
}
我一直在关注这里的教程:http://www.youtube.com/watch?v=8n1GV99FJ2Y&list=PLEETnX-uPtBXP_B2yupUKlflXBznWIlL5&index=11
他的教程中的所有代码都在这里:https://github.com/BennyQBD/3DGameEngine
我并没有完全遵循它,但就着色器类和所有内容而言,它是完全相同的。如果您需要发布任何其他代码...请告诉我。
我对 OpenGL 2.0+ 和 GLSL 还是很陌生,并试图弄清楚如何知道哪一行有错误。有像 GL11.glGetError(); 这样的顶点着色器的东西吗?
是否有任何我可以使用的工具或我可以浏览的文档来尝试解决问题?
我真的很想学习自己解决这些问题。我该怎么做?
【问题讨论】:
-
是的,使用 glGetShaderInfoLog (我看到它在你链接的源代码中确实这样做了)。更重要的是,我看不到您请求 OpenGL 版本的任何地方。我认为提供 glsl 1.1 的 2.0 上下文不会有 #version 指令,但这只是一个猜测,因为我只使用 OpenGL 3.1+。
-
我在代码中使用了 glGetShaderInfoLog,因为它没有提供任何真实信息……我认为它没用。 - 我正在运行的 OpenGL 版本是 3.0,它确实打印它...但是我没有包括它。 #Version 120 等同于 OpenGL 2.1,虽然我不太确定你的第三句话是什么意思。
-
@Xonar:这实际上是一个灰色地带。 GLSL 1.1 规范的早期版本。没有定义
#version或#extension预处理器指令,所以一些早期的实现可能不支持它。不过我从来没有遇到过这个问题。
标签: java opengl glsl vertex-shader