OpenGL でこのパターンを描画しようとしています:
これを取得するために、次のようなパターンを作成しました。
vector< vector<DataPoint> > datas;
float Intensitytemp=0;
float xPos=0, yPos=0, angleInRadians=0;
for (float theta = 0.0f; theta < 4096; theta += 1.f)
{
vector<DataPoint> temp;
angleInRadians = 2 * M_PI*theta / 4096;
for (float r = 0; r < 4096; r += 1.f)
{
xPos = cos(angleInRadians)*r / 4096;
yPos = sin(angleInRadians)*r / 4096;
Intensitytemp = ((float)((int)r % 256)) / 255;
DataPoint dt;
dt.x = xPos;
dt.y = yPos;
dt.Int = Intensitytemp;
temp.push_back(dt);
}
datas.push_back(temp);
}
そして私は次のようにパターンを描いています:
glBegin(GL_POINTS);
for (int x = 0; x < 4096; x++)
for (int y = 0; y < 4096; y++)
{
xPos = datas[x][y].x;
yPos = datas[x][y].y;
Intensitytemp = datas[x][y].Int;
glColor4f(0.0f, Intensitytemp, 0.0f, 1.0f);
glVertex3f(xPos, yPos, 0.0f);
}
glEnd();
データをglBegin()-glEnd()
ブロックで作成すると、動作が速くなります。しかし、どちらの場合も、GLSL ですべてを行う方がよい方法だと思います。私は、最新の OpenGL の背後にあるロジックをよく理解していませんでした。
頂点バッファ配列とカラー配列を作成しようとしましたが、うまくいきませんでした。問題は、配列をグラフィック カードに転送することではありませんでした。配列でスタック オーバーフローが発生しています。これは別のトピックの問題ですが、これらの巨大な配列をグラフィックス カードに転送することなく、完全に GLSL コード(.vert ファイル内のもの) でこのタスクを実行できるのではないかと思います。