【问题标题】:Opengl: coloring a world map?Opengl:为世界地图着色?
【发布时间】:2017-02-13 18:46:55
【问题描述】:

这是每个 GIS 应用程序都可以完成的任务:给定一些多边形,用选定的颜色填充每个多边形。像这样:image

在 Opengl 中重复执行此操作的最佳方法是什么?也就是多边形没有变化,我想改变着色的数据来产生不同的渲染。

为每次渲染重新绘制多边形是最直接的解决方案,但这似乎是一种浪费,因为几何形状根本没有改变。

还是为每个多边形创建一个模板,然后模板打印整个地图更好?如果多边形太多,执行数百或数千次渲染通道会产生问题吗?

【问题讨论】:

    标签: opengl graphics gis


    【解决方案1】:

    对于多边形的每个顶点,映射某种颜色。这意味着当您将数据发送到着色器时,每次调用顶点数组对象都会发送 2 个参数:顶点着色器中需要的向量和将用作片段颜色。这是最简单的方法。

    例如想象一个在 opengl 中绘制的三角形。如果您将其顶点发送到顶点着色器并在每次顶点进入着色器管道时在片段着色器中设置颜色,它将相应地定位并使用片段着色器中的给定颜色设置在屏幕上。

    我解释得很差的技术(对不起,我不是最擅长解释),用于彩色三角形示例,其中颜色插值。红色映射到一个角,绿色映射到另一个,蓝色到最后。如果您将其设置为红色映射到每个角落,您将获得彩色三角形。这是基本原则。哦,您绘制的三角形数量最少,您需要一对着色器。 注意:多边形由 N 个三角形组成,您需要将相同的颜色映射到该多边形中绘制的每个三角形的每个顶点。

    【讨论】:

      【解决方案2】:

      我认为更大的问题是 OpenGL 通常不支持多边形或矢量绘图,但有一些库可以做到这一点。您必须使用现有的矢量绘图解决方案,否则,您必须将 GIS 数据(通常是多边形的点列表)转换为三角形。这可能是最大的障碍。

      几何体没有改变这一事实并不是真正的问题,您通常会将几何体存储到一个或多个缓冲区中,然后创建逻辑以仅绘制视点区域内可见的内容,甚至可以走得更远只为可见区域生成几何图形。

      另请参阅此问题及其答案。

      Rendering Vector Graphics in OpenGL?

      【讨论】:

        猜你喜欢
        • 2016-10-14
        • 1970-01-01
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多