OpenGLで白い三角形を描画する
公開日:
:
最終更新日:2013/11/10
プログラミング
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
#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 とか数年ぶりに使ったかも。
以下の書籍を読みながら勉強してます。
- 作者: Paul Matz,松田晃一,松田真梨子
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2007/12/25
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 30回
- この商品を含むブログ (15件) を見る