使用简单顶点着色器时出错

时间:2013-07-26 22:48:41

标签: opengl vertex-shader

我在阅读本教程后遇到问题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。

只是不知道现在该做什么。

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

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作为我的默认库。

2 个答案:

答案 0 :(得分:0)

我开始意识到,由于帮助了我,我所做的事情有点不对劲。 如果有人遇到这种问题,最好的选择是尝试库(SFML)本机函数。 这就是我现在正在使用this tutorial

答案 1 :(得分:-3)

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

好 - >

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

BAD - >

#version 330 core

in vec3 ourColor;

out vec4 color;

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

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