간단히 삼각형으로 구현해 보았다
h키를 누르니 새로운 삼각형이 새로운 위치에 하나 등장하였다
이거시 원하는 것이 아니더냐?
나의 코드는 이러하다
class Block {
public:
float x; // 위치정보
float y;
float z;
float c; // 색상정보 추가함
Block()
{
x = 0;
y = 0;
z = 0;
c = 0;
}
};
int dl;
Block gBlock[2];
void DoDisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
for (int i = 0; i
{
glTranslatef(gBlock[i].x, gBlock[i].y, gBlock[i].z);
glColor3f(1, gBlock[i].c, 0);
glCallList(dl);
}
glFlush();
}
void Keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 'h':
if (nCount
{
nCount++;
gBlock[1].x = 0.1;
gBlock[1].c = 1;
glutPostRedisplay();
}
break;
}
}
void main(int argc, char** argv)
{
glutCreateWindow("OpenGL");
dl = glGenLists(1);
glNewList(dl, GL_COMPILE);
glBegin(GL_TRIANGLES);
glVertex2f(0.0, 0.2);
glVertex2f(-0.2, -0.2);
glVertex2f(0.2, -0.2);
glEnd();
glEndList();
glutKeyboardFunc(Keyboard);
glutDisplayFunc(DoDisplay);
glutMainLoop();
}
원래는 벡터로 구현해야 하는데
귀찮아서 전역 배열로 구현했노라
당연히 2개밖에 컨트롤이 안되노라
참고하도록 엣헴~
선생님 도중에 코드가 중간중간 짤린거같습니다..for문이라던지..
for (int i = 0; i < nCount; i++)
if (nCount < 2)
두개만 출력하기 위해서 간단히 ncount를 2로 잡았노라..
실제로 게임같은데서 버튼 누를때마다 하려면 배열이 아니라 동적 배열인 벡터같은 동적 자료구조로 구현해야 하노라
감사합니다 형님 한번 돌려보고올게요 제발 가지마세요 ㅜㅜ
형님 근데 여쭈어볼것이 있는데 처음에 회전이나 이동하다가 h 누르면 이 기존의 객체는 멈추고 새로 생성된 객체는 움직이게 할 수없나요?