对于我的小3D编辑器,需要一个转换Gizmo,与用户进行清晰方便的交互。出于这个原因,我的小发明它不仅仅是折线,而是具有纹理的四边形。 Gizmo有3个四边形和2个纹理,每个四边形带有箭头图片 - 用于活动和非活动状态(作为选项 - 一个纹理可以将当前纹理坐标从一个箭头偏移到另一个箭头)。
纹理箭头:
我需要当光标在一个箭头上方时,相应的箭头将改变颜色(改变纹理或坐标)。 我设法通过在片段着色器中偏移fs_in.texCoords来改变坐标,但它改变了我的所有坐标,这不是我需要的。
我的箭头是相似的,但我不想画3次相同的VAO并用新的纹理坐标重新定位新的VAO。 我的VAO只是一个阵列:
vertices =
{ //POSITION FIRST QUAD //TEXTURE FIRST QUAD
-1.0f, -1.0f, 0.0f, 0.3f, 0.3f,
-1.0f, 1.0f, 0.0f, 0.3f, 0.0f,
1.0f, 1.0f, 0.0f, 0.0f, 0.0f,
1.0f, -1.0f, 0.0f, 0.0f, 0.3f,
...
//POSITION SECOND QUAD //TEXTURE SECOND QUAD
...
//POSITION THIRD QUAD //TEXTURE THIRD QUAD
};
我想在一个VAO中立即渲染Gizmo,但在这种情况下,我不知道如何仅为着色器中的一个四边形更改纹理。是否有技巧或作弊如何在着色器中实现它?