이 프로그램을 작성했지만 더 멀리 이동함에 따라 크기를 변경해야합니다.어떻게 투시 투영 행렬을 사용합니까?
package com.ncom.src;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import static org.lwjgl.util.glu.GLU.*;
import static org.lwjgl.opengl.GL11.*;
public class Main {
public void start() {
float y = 0;
try {
Display.setDisplayMode(new DisplayMode(800,600));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
while (!Display.isCloseRequested()) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 800, 600, 0, 500000000, -500000000);
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glVertex3f(350, 250, y);
glVertex3f(350, 270, y);
glVertex3f(370, 270, y);
glVertex3f(370, 250, y);
glEnd();
Display.update();
y -= 20;
}
Display.destroy();
System.exit(0);
}
public static void main(String[] argv) {
Main quadExample = new Main();
quadExample.start();
}
}
아니요. 수학은 중요하지 않습니다. 실제 코드가없는 곳이면 어디든 볼 수 있습니다. 원근감있는 깊이로 또는 '화면 상에 있지 않은'사각형을 그리는 방법은 무엇입니까? –
@Dr_N : 음, 수학을 이해하면됩니다. 프로그래밍은 수학 표기법을 프로그래밍 언어 소스 코드로 바꾸는 과정입니다. "코드 예제"를 배우는 것은 흥미로운 부분을 가르쳐주지는 않습니다. 특히 그래픽의 경우, 단 한 줄의 수학 표기법이 코드로 가득 찬 화면으로 확장 될 수 있습니다. – datenwolf
@datenwolf : 학습을 시작할 수있는 곳을 알려주시겠습니까? –