GLSL。在着色器

时间:2017-09-07 22:55:29

标签: opengl glsl shader vao

对于我的小3D编辑器,需要一个转换Gizmo,与用户进行清晰方便的交互。出于这个原因,我的小发明它不仅仅是折线,而是具有纹理的四边形。 Gizmo有3个四边形和2个纹理,每个四边形带有箭头图片 - 用于活动和非活动状态(作为选项 - 一个纹理可以将当前纹理坐标从一个箭头偏移到另一个箭头)。

纹理箭头:

enter image description here

我需要当光标在一个箭头上方时,相应的箭头将改变颜色(改变纹理或坐标)。 我设法通过在片段着色器中偏移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,但在这种情况下,我不知道如何仅为着色器中的一个四边形更改纹理。是否有技巧或作弊如何在着色器中实现它?

0 个答案:

没有答案