簡體   English   中英

在OpenGL / OpenTK中使用漸變渲染圓

[英]Render circle with gradient in OpenGL / OpenTK

我將C#和OpenTK用於圖形,這基本上是OpenGL的包裝。

我目前正在圓形行星后面繪制圓形海洋,它看起來像這樣: 在此處輸入圖片說明

我真正想做的是用漸變的方式渲染海洋,因此海洋的最深處變得更暗,上升時變得更淺。 此外,我將對大氣使用類似的方法,這將逐漸淡至0%。 我希望這種方法可以與任何半徑的圓(小或大)一起正常工作。

我所要做的就是渲染一個半徑較大的圓圈,並減少不透明度或顏色變深。 我敢肯定有更好的方法。 有人有想法么?

編輯6-18-2018:這是渲染磁盤的方法。 現在只需要漸變即可。

    private void DrawDisc(Vector2 center, float innerRadius, float outerRadius, Color4 fillColor)
    {
        // no one knows what this is
        var quad = Glu.NewQuadric();

        int segments = 10;

        Gl.glEnable(Gl.GL_BLEND);
        Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
        Gl.glColor4f(fillColor.R, fillColor.G, fillColor.B, fillColor.A);

        Glu.Disk(quad, innerRadius, outerRadius, segments, segments);

        Gl.glEnd();
        Gl.glDisable(Gl.GL_BLEND);
    }

我看到兩個選擇:

  1. 使用着色器計算每個渲染像素的顏色。 在這里可以廣泛地解釋什么是着色器以及如何使用它們,但是有很多關於此的文檔。 本質上,這種像素着色器將為光盤的每個像素計算其距中心和/或海洋深度的距離,並根據該距離生成顏色。 您可以在那時定義自己喜歡的任何方程式。

  2. 使用具有所需圖像的紋理,並向磁盤添加紋理坐標,以便在磁盤上映射紋理。 然后,紋理將隨磁盤一起拉伸或收縮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM