나는 내 친구와 엔진을 만들고 있는데, 정말 이상한 일이 일어나고있다. 나는 모든 것을 LWJGL로 설정했고, 즉각적인 모드에서 회색 사각형을 렌더링해야한다고 확신하지만, 나타나지 않는다. 우리는 그것을 카메라에서 직접 놓았지만 (그것은 땅을 대표하고있었습니다) 여전히 거기에 없었습니다. 나는이 질문이 매우 중요하다고 확신하지만 Google에 '왜 isnt 내 OpenGL 렌더링'을 입력하면 수천 개의 결과를 얻을 수 있습니다. 그래서, 나는 당신에게 그 소스 코드의 슬림 다운 버전을 보여줄 것입니다. (매우 몸매는 여전 하구나)왜 내 게임이 제대로 렌더링되지 않습니까?
다음public class Engine {
private static int[] size = { 1200, 900 };
private static final DisplayMode DISPLAY_MODE = new DisplayMode(size[0], size[1]);
public static PhysicsHandler physicsHandler;
public static Thread physicsThread;
public static Canvas canvas;
public Engine() {
loadGame();
setUpDisplay();
while (!Display.isCloseRequested()) {
render();
Display.update();
Display.sync(60);
}
cleanUp();
}
public static void main(String[] args) {
new Engine();
}
private static void setUpDisplay() {
try {
Display.setDisplayMode(DISPLAY_MODE);
Display.setVSyncEnabled(true);
Display.setTitle("Hello, world!");
Display.create();
canvas = new Canvas();
} catch (LWJGLException e) {
System.err.println("Couldn't set up the display");
Display.destroy();
System.exit(1);
}
}
public void render() {
canvas.render();
}
private static void cleanUp() {
physicsThread = null;
canvas.cleanUp();
Display.destroy();
}
}
이 (렌더링 코드 일명) 캔버스입니다 :
import org.lwjgl.opengl.Display;
import org.lwjgl.util.vector.Vector3f;
public class Canvas {
public void render(Vector3f pos, Vector3f rot) {
//not used until I have a proper camera
}
public void render() {
render3D();
}
public void clearGL() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
}
public void init3D() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90, (float) Display.getWidth()/(float) Display.getHeight(), 0.03f,20f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glEnable(GL_FOG);
}
public void render3D() {
glRotatef(5f, 1f, 0f, 0f);
init3D();
clearGL();
System.out.println("Trying to render");
glBegin(GL_QUADS);
glColor4f(0.6f, 0.6f, 0.6f, 1);
glVertex4f(-50, 0, -50, 1);
glColor4f(0.85f, 0.85f, 0.85f, 1);
glVertex4f(-50, 0, +50, 1);
glColor4f(0.75f, 0.75f, 0.75f, 1);
glVertex4f(+50, 0, +50, 1);
glColor4f(0.5f, 0.5f, 0.5f, 1);
glVertex4f(+50, 0, -50, 1);
glEnd();
}
public static void cleanUp() {
}
}
내가 제대로 내 상태를 설정하지 않는 건가요 여기
은 엔진 코드를 무엇입니까?
도움 주셔서 감사합니다. 내가 잘못한 문제를 해결했지만 여전히 나타나지 않는다고 말하면서 유감입니다. 웹에서 더 많은 솔루션을 찾고 있지만 대부분 스크랩하고 다시 시작합니다. –
테스트 할 코드가 거의 없습니다. 스크랩하지 않아도됩니다. 분명히 작동 할 수있는 것으로 시작하십시오 : gluPerspective 라인을 주석으로 처리하고, 뒤쪽면 컬링을 사용하지 마십시오 (이것은 설정 한 와인딩 순서에 따라 문제가 될 수 있습니다). 그런 다음 상자의 정점을 NDC 내부로 변경하십시오 (3 축 모두 [0, 1] 임). 그러면 뭔가를 볼 수 있습니다. –