0
의 코드의 출력을 찻 주전자 배선에 문제가 발생하는 것은 다음과 같습니다 :이내가 OpenGL을
을? : 같은 주전자 모양을 만들 수있는 방법을
gluPerspective
및 glViewport
명령을 추가하려고했지만 작동하지 않습니다.
#include<windows.h>
#include<stdio.h>
#include<GL/gl.h>
#include<GL/freeglut.h>
void DrawScene(void);
void DrawSceneAxes(void);
void InitOpenGL(void);
void ReshapeWindow(int width, int height);
int mainWindow;
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutInitWindowPosition(150,150);
mainWindow = glutCreateWindow("Transformacje czajnikowe");
if(mainWindow == 0){
puts("Can't create window!\n");
exit(-1);
}
glutSetWindow(mainWindow);
glutDisplayFunc(DrawScene);
glutReshapeFunc(ReshapeWindow);
InitOpenGL();
glEnable(GL_DEPTH_TEST);
glutMainLoop();
return(0);
}
void DrawScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
DrawSceneAxes();
glutSwapBuffers();
}
void DrawSceneAxes(void)
{
typedef float pt3d[3];
pt3d x_beg = { -10.0f, 0.0f, 0.0f };
pt3d x_end = { 10.0f, 0.0f, 0.0f };
pt3d y_beg = { 0.0f, -10.0f, 0.0f };
pt3d y_end = { 0.0f, 10.0f, 0.0f };
pt3d z_beg = { 0.0f, 0.0f, -10.0f };
pt3d z_end = { 0.0f, 0.0f, 10.0f };
glBegin(GL_LINES);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3fv(x_beg);
glVertex3fv(x_end);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3fv(y_beg);
glVertex3fv(y_end);
glColor3f(0.0f, 0.0f, 1.0f);
glVertex3fv(z_beg);
glVertex3fv(z_end);
glEnd();
glutWireTeapot(4.0);
}
void InitOpenGL(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}
void ReshapeWindow(int width, int height)
{
//printf("w: %d\n", width);
//printf("h: %d\n", height);
GLdouble nRange = 15.0f;
if(height == 0)
{
height = 1;
}
if(width == 0)
{
width = 1;
}
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(width <= height)
glOrtho(-nRange, nRange, -nRange*((GLdouble)height/width), nRange*((GLdouble)height/width), -1.0f, 1.0f);
else
glOrtho(-nRange*((GLdouble)width/height), nRange*((GLdouble)width/height), -nRange, nRange, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
에 오신 것을 환영합니다 SO에 조작하는 방법! 정확한 문제를 설명해주십시오. "작동하지 않습니다."라고 말하면 전혀 도움이되지 않습니다. – Mark