0

我按照本教程http://open.gl/textures?我无法理解这些代码,也不能在我的 Visual Studio 项目中运行。另外,“in vec2”和“out vec3”是什么类型的格式?

in vec2 texcoord;

out vec3 Color;
out vec2 Texcoord;

void main()
{
    Texcoord = texcoord;

……

glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE,
                       7*sizeof(float), 0);
glVertexAttribPointer(colAttrib, 3, GL_FLOAT, GL_FALSE,
                       7*sizeof(float), (void*)(2*sizeof(float)));

GLint texAttrib = glGetAttribLocation(shaderProgram, "texcoord");
glEnableVertexAttribArray(texAttrib);
glVertexAttribPointer(texAttrib, 2, GL_FLOAT, GL_FALSE,
                       7*sizeof(float), (void*)(5*sizeof(float)));
4

1 回答 1

2

您引用的第一部分应该是vertex shader。它是用GLSL编写的,不应该被 Visual Studio(或任何其他 C/C++ 编译器,就此而言)理解,而是由您的 GL 实现的 GLSL 编译器理解。您引用的其余部分是在主机 CPU 上执行的 GL 客户端代码,用于设置通用顶点属性数组。

在尝试纹理课程之前,您应该真正完成该教程的更基本部分。着色器和通用属性在该教程的绘图课中介绍,这对于以下所有课程都是必不可少的。

于 2013-12-15T19:54:46.573 回答