opengl-soil 第一次尝试放置纹理

Posted

技术标签:

【中文标题】opengl-soil 第一次尝试放置纹理【英文标题】:opengl-soil try to put a texture for first time 【发布时间】:2013-12-15 19:44:16 【问题描述】:

我遵循本教程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)));

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于opengl-soil 第一次尝试放置纹理的主要内容,如果未能解决你的问题,请参考以下文章

渲染到纹理时出现黑屏

如何在飞机的正面和背面放置两种不同的纹理?

将帧缓冲区附加到纹理错误

闪烁的金属输出纹理...为啥?

OpenGL 包装器中的 Alpha/纹理问题

OpenGL:一次只有一个 FBO 工作