Image

OpenGLとC言語で扇型を描画する - 図形の描画

今回はOpenGLとC言語で扇型を描画します。扇型の描画に必要なサンプルコードを用いながらOpenGLの基本的な使用方法について解説しています。

OpenGLとC言語で扇型を描画する

C言語とOpenGLの基本的な使用方法について触れながら扇型の描画について解説します。

目次   

01. OpenGLの基本関数

02. 扇型を描画する

03. まとめ


01. OpenGLの基本関数



OpenGLには大きく分けて三つの必須な関数があります。



// 初期化関数

void init(void) {

           //背景色を指定

           glClearColor(0.00.00.01.0);

}



まずは初期化関数です。

主に全体的な初期設定を行います。

ここでは背景色を指定しています。



//描画関数

void display(void) {


}



次にdisplay関数です。

ここでは主にウィンドウ上に表示させるものを記述します。

今回も扇型はdisplay関数で定義します。



int main(int argc, char* argv[]) {

           //GLUTライブラリを初期化

           glutInit(&argc, argv);

           //表示モードを設定

           glutInitDisplayMode(GLUT_RGBA);

           //ウィンドウを生成

           glutCreateWindow(argv[0]);

           //描画を行う関数を指定

           glutDisplayFunc(display);

           //初期化

           init();

           //メイングループ

           glutMainLoop();

           return EXIT_SUCCESS;

}



最後にmain関数です。

main関数は実際にコードの実行を行うための関数です。


02. 扇型を描画する



//描画関数

void disply(void){

    //配列の宣言

    static GLfloat v[22];

    //バッファをクリア

    glClear(GL_COLOR_BUFFER_BIT);

    int n = 0;

    int i = 0;

    v[n] = 0.0f;

    v[++n] = 0.0f;

    for(i = 0; i <=90; i +=10){

        double radian = i * PI / 180.0;

        v[++n] = cos(radian);//x座標

        v[++n] = sin(radian);//y座標

    }

    //扇型

    glColor3d(0.10.80.1);//色の指定

    glPointSize(10.0);//サイズの指定

    glVertexPointer(2GL_FLOAT0, v);

    glEnableClientState(GL_VERTEX_ARRAY);

    glDrawArrays(GL_TRIANGLE_FAN011);

    glDisableClientState(GL_VERTEX_ARRAY);

    glFlush();//実行

}




まずGLfloatで配列を定義します。

static GLfloat v[22]で静的な配列を定義しています。

バッファをクリアしfor文で使用する変数を定義します。定義するときは初期値として0を格納しておきましょう。

iは円の角度を表しておりnはforループの中で任意の配列に格納するために使用されています。

glColor3d()は扇型の色を指定しています。

glPointSizeは中心点の大きさを指定しています。

glVertexPointer()はそれぞれの配列に格納された点の位置情報をもとに点を描画します。

glEnableClientState()は頂点を配列として保存します。

glDrawArrays()によって図形の描画を行います。

glDisableClientState()は配列を有効にしたものを無効にします。

glFlush()でdisplay関数を実行します。


03. まとめ


お疲れ様でした。

ここまで読んでいただきありがとうございました。

今回は基本的な扇型を描画しました。