/*
Visual C++でOPENGLのGLUTを使い円錐を作ってみました。
GLUTのHPにある例題の立方体を元に作り直しました。
一応、表示はされるのですがあっているのでしょうか?
勉強し始めたばかりで、よくわかっていません。
*/
#include <GL/glut.h>
GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};
GLfloat light_position[] = {0.0, 0.0, 1.0, 0.0};
void
display(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0.0, -1.0, -3.0);
glRotatef(-90, 1.0, 0.0, 0.0);
glColor3f(1.0, 0.0, 0.0);
glutSolidCone(0.5 /* radius */, 2.0 /* height */, 10 /* slicies */,
10 /* stacks */);
glPopMatrix();
glutSwapBuffers();
}
void
init(void) {
glClearColor(0.0, 0.0, 0.0, 0.0);
// Enable a single OpenGL light.
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
glEnable(GL_COLOR_MATERIAL);
/* Use depth buffering for hidden surface elimination. */
glEnable(GL_DEPTH_TEST);
/* Setup the view of the cube. */
glMatrixMode(GL_PROJECTION);
gluPerspective( /* field of view in degree */ 40.0,
/* aspect ratio */ 1.0,
/* Z near */ 1.0, /* Z far */ 10.0);
glMatrixMode (GL_MODELVIEW);
gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */
0.0, 0.0, 0.0, /* center is at (0,0,0) */
0.0, 1.0, 0.); /* up is in positive Y direction */
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow(cylinder);
glutDisplayFunc(display);
init();
glutMainLoop();
return(0); /* ANSI C requires main to return int. */
}
多分、こう言う漠然とした質問の仕方では、
返答のレスが付かないと思いますよ。
掲示板などで質問するときは、このソースのこの部分の使い方が
わからないとか、この関数のこの引数の意味がわからないとか
ピンポイントで質問しないと返事が付きにくいです。
この質問では自分のソースの添削をしてくれと言うのと
同じ事になってしまいますので。
代表的なサイト?
ぐぐると他にもある。
もう少し調べてみましょう。
OPGLorg
http://www.opengl.org/
OPENGL説明サイト
http://wisdom.sakura.ne.jp/system/opengl/
OpenGLを使う前にワールド座標系からスクリーン座標系までどんな変換(4x4行列)が行わ
れているのか、ポリゴンはどうやって表示されているのかなど基本的な部分が分かると
OpenGLは簡単ですよ。(既に勉強済みならすみません。)
昔は赤と青のバイブルが売っていたので、OpenGLを使いこなそうとするなら購入したほう
がいいかもしれません。
OpenGLでできることはDirectXでもできるはずなので、DirectXも検討してみてはどうで
しょうか?