0

我在学习本教程The First Triangle时遇到问题。我实际上设法让第一部分工作,但是当涉及到顶点着色器时它不起作用。

这是我的顶点着色器代码:

#version 330 core

// Input vertex data, different for all executions of this shader.
layout(location = 0) in vec3 vertexPosition_modelspace;

void main(){
gl_Position.xyz = vertexPosition_modelspace;
gl_Position.w = 1.0;
}

它只是教程的副本,但它给了我这个错误:必须写入 gl_Position。`

只是不知道现在该怎么办。

编辑:我正在使用带有 319.32 驱动程序的 GeForce 9500GT

EDIT2:我实际上在旧版本中得到了同样的东西,但它有同样的错误。这是代码:

#version 120
// Input vertex data, different for all executions of this shader.
attribute vec3 vertexPosition_modelspace;

void main(){

gl_Position = vec4(vertexPosition_modelspace, 1.0);

}

EDIT3:我使用 SFML 作为我的默认库。

4

2 回答 2

0

我开始意识到我所做的有点不对,多亏了你帮助我。如果有人遇到这种问题,最好的选择是尝试库(SFML)本机功能。这就是我现在使用本教程所做的。

于 2013-07-27T13:41:21.477 回答
-3

如果您的着色器文件一次连续有多个换行符 [0D0A],或者它们仅包含 0D 或 0A,那么您将度过糟糕的一天。

好 ->

#version 330 core
in vec3 ourColor;
out vec4 color;
void main()
{
    color = vec4(ourColor, 1.0f);
}

坏->

#version 330 core

in vec3 ourColor;

out vec4 color;

void main()
{
    color = vec4(ourColor, 1.0f);
}

至少这对我有用......

于 2015-08-27T20:03:56.720 回答