OpenGLで白い三角形を描画する

公開日: : 最終更新日:2013/11/10 プログラミング

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

http://farm4.static.flickr.com/3219/2974243748_54151e968c.jpg



#include <stdio.h>
#include <GLUT/glut.h>
#include <OpenGL/glu.h>
#include <OpenGL/gl.h>
#include <string>
#include <sstream>
#include <assert.h>

static const int QUIT_VALUE(99);

GLuint listID;

static void display()
{
glClear(GL_COLOR_BUFFER_BIT);

glLoadIdentity();
glTranslatef(0.f, 0.f, -4.f);

glCallList(listID);

glutSwapBuffers();

assert(glGetError() == GL_NO_ERROR);
}

static void reshape(int w, int h)
{
glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(50., (double)w/(double)h, 1., 10.);

glMatrixMode(GL_MODELVIEW);
assert(glGetError() == GL_NO_ERROR);
}

static void mainMenuCB(int value)
{
if(value == QUIT_VALUE)
exit(0);
}

static void init()
{
glDisable(GL_DITHER);

std::string ver((const char*)glGetString(GL_VERSION));
assert(!ver.empty());
std::istringstream verStream(ver);

int major, minor;

char dummySep;
verStream >> major >> dummySep >> minor;
const bool useVertexArrays = ((major >= 1) && (minor >= 1));

const GLfloat data[] = {
-1.f, -1.f, 0.f,
1.f, -1.f, 0.f,
0.f, 1.f, 0.f};

if(useVertexArrays)
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, data);
}

listID = glGenLists(1);
glNewList(listID, GL_COMPILE);

if(useVertexArrays)
glDrawArrays(GL_TRIANGLES, 0, 3);
else
{
glBegin(GL_TRIANGLES);
glVertex3fv(&data[0]);
glVertex3fv(&data[3]);
glVertex3fv(&data[6]);
glEnd();
}

glEndList();

assert(glGetError() == GL_NO_ERROR);

glutDisplayFunc(display);
glutReshapeFunc(reshape);

int mainMenu = glutCreateMenu(mainMenuCB);
glutAddMenuEntry("Quit", QUIT_VALUE);
glutAttachMenu(GLUT_RIGHT_BUTTON);
}


int main (int argc, const char * argv[]) {
glutInit(&argc, const_cast<char**>(argv));

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowSize(300, 300);
glutCreateWindow("Simple Example");

init();

glutMainLoop();

return 0;
}

const_cast とか数年ぶりに使ったかも。

以下の書籍を読みながら勉強してます。

OpenGLの神髄

OpenGLの神髄

関連記事

サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

lolipop アップルの開発者向けイベント「WWDC2014」

ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑