Trong phiên bản GLSL 110 tôi có thể được phối hợp trong gl_TexCoord [] nhưng nó bị phản đối trong mã 150.Làm cách nào để phối hợp kết cấu với GLSL trong phiên bản 150?
OpenGL:
shader.setupShaderFromFile(GL_VERTEX_SHADER, "t.vert");
shader.setupShaderFromFile(GL_FRAGMENT_SHADER, "t.frag");
shader.linkProgram();
glGetFloatv(GL_MODELVIEW_MATRIX, modelview_mat_);
glGetFloatv(GL_PROJECTION_MATRIX, projectionview_mat_);
shader.begin();
glUniformMatrix4fv(glGetUniformLocation(shader.getProgram(), "MVMatrix"), 1, GL_FALSE, modelview_mat_);
glUniformMatrix4fv(glGetUniformLocation(shader.getProgram(), "MPMatrix"), 1, GL_FALSE, projectionview_mat_);
glBegin(GL_QUADS);
glTexCoord2f(0, 0);glVertex2f(0, 0);
glTexCoord2f(1, 0);glVertex2f(100, 0);
glTexCoord2f(1, 1);glVertex2f(100, 100);
glTexCoord2f(0, 1);glVertex2f(0, 100);
glEnd();
shader.end();
Shader Code:
VERTEX-
#version 150
in vec3 in_vertex;
in vec2 in_coord;
uniform mat4 MVMatrix;
uniform mat4 MPMatrix;
out vec2 tex_coord;
void main()
{
vec4 v = vec4(in_vertex, 1.0);
tex_coord = in_coord;
gl_Position = MPMatrix * MVMatrix * v;
}
FRAGMENT:
#version 150
in vec2 tex_coord;
out vec4 frgcolor;
void main()
{
frgcolor = vec4(tex_coord, 0.0, 1.0);
}
màn hình cuối cùng là một quad màu đỏ.
Làm cách nào để chuyển tọa độ kết cấu thành bóng đổ? hoặc mã của tôi là sai?
tks, giải quyết, tất cả để người dùng định nghĩa ... –
"Nếu bạn muốn ở lại với chế độ ngay lập tức, bạn sẽ sử dụng glVertexAttrib2f." Chế độ ngay lập tức cũng được * cũng * xóa (hoặc "không được chấp nhận" nếu bạn thích), do đó, thực sự không có điểm. Hoặc bạn đang sử dụng nội dung bị xóa hoặc bạn không sử dụng; không có lý do gì để làm điều đó một nửa. –
Tôi biết đây là một chủ đề rất cũ nhưng tôi chỉ muốn chỉ ra rằng có sự khác biệt giữa không được chấp nhận và bị xóa. – MJLaukala