그래서 오브젝트를 회전시키고 싶다. glPushMatrix()를 호출하여 매트릭스를 저장한다. glTranslatef는 객체가 자신의 축을 갖기를 원하기 때문에, 그때는 회전을 호출 glPopMatrix가()와 아무 반응이 없습니다 : D오브젝트가 움직이지 않는다.
package Tanc;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.*;
public class Tanc{
public Tanc(){
try{
Display.setDisplayMode(new DisplayMode(640,480));
Display.setTitle("Tancc");
Display.create();
}catch(LWJGLException e){
e.printStackTrace();
}
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GL11.glOrtho(1, 1, 1, 1, 1, -1);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glMatrixMode(GL11.GL_PROJECTION);
float y_angle = 0;
while (!Display.isCloseRequested()) {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
GL11.glPushMatrix();
/*
GL11.glRectd(0, 0, 0.2f, 0.3f);
// GL11.glRotated(50, 1, 0, 0);
// GL11.glRotated(50, 0, 1, 0);
GL11.glRotated(1, 0, 0, 1);
// GL11.glTranslatef(0, 0, 0);
GL11.glTranslatef(-0.1f, -0.15f, 0);
// GL11.glTranslatef(-1f, -0.15f, 0);
GL11.glPopMatrix();
*/
GL11.glLoadIdentity();
GL11.glPushMatrix();
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(0f, 0f);
GL11.glVertex2f(0.2f, 0f);
GL11.glVertex2f(0.2f, 0.3f);
GL11.glVertex2f(0f, 0.3f);
GL11.glEnd();
GL11.glTranslatef(-0.1f, -0.15f, 0);
GL11.glRotatef(30, 1, 0, 1);
GL11.glPopMatrix();
Display.update();
Display.sync(60);
}
Display.destroy();
System.exit(0);
}
public static void main(String[] args){
new Tanc();
}
}
아무것도 변경되지 않습니다. –
의미가 없습니다. 코딩 배경이 있습니까? 그렇지 않다면 3D 프로그래밍을 시작하기 전에 기본으로 돌아갈 것입니다. –
또한 while 루프 외부에서 xRot을 선언해야합니다. 그렇지 않으면 같은 문제가 발생합니다. –