Graphics 使用不同颜色绘制多段线的最佳做法是什么

Graphics 使用不同颜色绘制多段线的最佳做法是什么,graphics,opengl-es,3d,opengl-es-2.0,Graphics,Opengl Es,3d,Opengl Es 2.0,我想画多段线,每个多段线由不同数量的点组成,每个点都有自己的颜色 在这种情况下,最佳做法是什么?我应该如何收集信息并将其发送到GPU?将所有条带分解为glu行,并使用单个glDrawArrays()/glDrawElements()调用进行渲染 对于glDrawerElements()情况,您可以像这样分解条带: #include <vector> using namespace std; #include <glm/glm.hpp> using namespace g

我想画多段线,每个多段线由不同数量的点组成,每个点都有自己的颜色


在这种情况下,最佳做法是什么?我应该如何收集信息并将其发送到GPU?

将所有条带分解为
glu行
,并使用单个
glDrawArrays()
/
glDrawElements()
调用进行渲染

对于
glDrawerElements()
情况,您可以像这样分解条带:

#include <vector>
using namespace std;

#include <glm/glm.hpp>
using namespace glm;

struct LineBatch
{
    void AddStrip( const vector< vec2 >& strip, const vec3& color )
    {
        if( strip.size() < 2 )
            return;

        for( size_t i = 1; i < strip.size(); ++i )
        {
            indices.push_back( (GLushort)verts.size() + (GLushort)(i-1) );
            indices.push_back( (GLushort)verts.size() + (GLushort)(i-0) );
        }

        for( size_t i = 0; i < strip.size(); ++i )
        {
            Vertex temp;
            temp.pos = strip[i];
            temp.color = color;
            verts.push_back( temp );
        }
    }

    void Render()
    {
        ...
        glDrawElements( GL_LINES, indices.size(), GL_UNSIGNED_SHORT, &indices[0] );
        ...
    }

private:
    struct Vertex
    {
        vec2 pos;
        vec3 color;
    };
    vector< Vertex > verts;
    vector< GLushort > indices;
};
#包括
使用名称空间std;
#包括
使用名称空间glm;
结构行批处理
{
void AddStrip(常量向量和strip,常量向量3和颜色)
{
如果(条带尺寸()<2)
返回;
对于(尺寸i=1;i顶点;
向量指数;
};

您想在一次绘制调用中绘制它们吗?这基本上是一个问题-我应该如何绘制它们?在单个调用中,每个多段线在其自己的glDrawArrays调用中(这就是我现在正在做的)如何使用一个小纹理,每个像素每行有一种颜色。然后只需将纹理坐标添加到顶点数据。例如,您创建一个128x1纹理,填充颜色,并具有纹理坐标,如(1/128*(0-.5),.5),(1/128*(1-.5),.5),(1/128*(2-.5),.5)…这实际上是OpenGL ES 2.0,因此我认为不支持GLmultidraulements。如果我将使用GL_线,我将不得不复制每个顶点,而不是多段线的一条边,不是吗?你说的基本重启是什么意思?不在ES 2.0中,因此也不存在。您必须为
glDrawArrays()
案例复制顶点。对于
gl抽屉元素()
,只需复制索引即可。