opengl - 不同片段和顶点着色器文件中的向量名称
问题描述
我正在尝试用 2 个不同的纹理在 OpenGL 中制作 2 个对象,其中一个应该移动。
我制作了 2 个着色器程序并将其签名为不同的指示选项卡。着色器程序的参数看起来但程序只绘制一个对象(我稍后使用)。如果我使 .frag 和 .vert 文件具有相同的结构和输入/输出向量的名称,但仅更改纹理并从静态对象删除转换,是否正确?
//fragment of moving object
#version 330 core
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 color;
layout (location = 2) in vec2 texCoord;
out vec3 vecColor;
out vec2 TexCoord;
uniform mat4 transform;
uniform mat4 view;
uniform mat4 projection;
void main()
{
gl_Position = projection*view* transform * vec4(position, 1.0f);
vecColor = color;
TexCoord = texCoord;
}
// fragment of static object
#version 330 core
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 color;
layout (location = 2) in vec2 texCoord;
out vec3 vecColor;
out vec2 TexCoord;
uniform mat4 view;
uniform mat4 projection;
void main()
{
gl_Position = projection*view * vec4(position, 1.0f);
vecColor = color;
TexCoord = texCoord;
}
// code of Use()
void Use() const
{
glUseProgram(get_programID());
}
// Drawing elements in main event loop whiile()
// Draw first object
theProgram_stelaz.Use();
glBindVertexArray(VAO_stelaz);
glDrawElements(GL_TRIANGLES, _countof(indices_stelaz), GL_UNSIGNED_INT,
0);
glBindVertexArray(0);
// Draw second object
theProgram.Use();
glBindVertexArray(VAO_wings);
glDrawElements(GL_TRIANGLES, _countof(indices_wings), GL_UNSIGNED_INT,
0);
glBindVertexArray(0);
现在程序只从 indices_wings 中绘制第二个对象。我想绘制两个元素,并且仅来自 indices_wings 的对象应该移动。
解决方案
推荐阅读
- java - 不可变的有效注释未运行
- rfid - 从 Windows 10 机器向 ZD500R 发送 ZPL“RFW”命令时,如何修复 VOID 错误
- function - driver.get(url) 有时不能循环工作
- c++ - C++ Server 放入容器后无法工作
- java - 对如何初始化这些变量感到困惑
- c# - 使用 #1.png 递增编号并重命名多个文件
- javascript - 是否可以使用正方形或盒子而不是三角形在 webgl 中制作网格?
- google-sheets - 根据 Google 表格上的最后一个单元格对范围求和
- sql - 如何获得运行的唯一 ID 总数
- r - 如何按频率聚合一列字符串