渲染图像与形状覆盖

时间:2015-10-28 14:24:35

标签: c++ opengl glsl

我是opengl的新手,我正在努力在屏幕上显示多层物体。我试图在它上面显示不同形状的图像。现在我拥有的东西:

  • 原型代码,其中模型在给定矩形中绘制图像。我使用了最常见的概念,其中片段着色器从纹理中读取颜色信息

    in vec2 texCoord;
    out vec4 color;
    
    uniform sampler2D myTexture; 
    void main()
    {
        color = texture(myTexture, texCoord);
    }
    
  • 使用几何着色器渲染形状的原型代码。形状的数量非常少(十几个)。

     //geometry shader stub
     layout(points) in;
     layout(triangle_strip, max_vertices = 5) out;
    
     in vec2    shapeDim[];
     void draw_rectangle(vec4 pos, float w, float h); //etc...
    
     void main()
     {
        draw_rectangle(gl_in[0].gl_Position, shapeDim[0].x, shapeDim[0].y);
     }
    

现在我很困惑如何合并两个原型以使形状位于纹理之上。

  • 可以\我应该使用单个着色器程序吗?在这种情况下,如何使用我生成的图元有条件地获取纹理颜色或覆盖颜色(假设覆盖颜色对于开始是恒定的)。
  • 我应该使用单独的着色器程序\模型吗?即使用纹理程序,纹理VAO,绘制,使用叠加程序,叠加vao,绘制等...
  • 在现代opengl(> = 4.0)中使用几何着色器绘制常规几何图形是否有更好(聪明/更简单/更好)的方式?

0 个答案:

没有答案