Pertanyaan Segitiga LWJGL dasar dengan OpenGL


Saya mencoba untuk mendapatkan segitiga sederhana yang digambar di Java menggunakan LWJGL.

Saya mencoba mendapatkan segitiga sederhana, masing-masing dengan sudut satu warna tertentu. Sekarang ini hanya memberi saya layar kosong.

Ini kode saya:

package com.ex;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.input.Keyboard;

public class ColoredTriangle {
    public void start() {
        try {
            Display.setDisplayMode(new DisplayMode(640, 480));
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace();
            System.exit(0);
        }

        // Init OpenGL
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0, 640, 480, 0, 1, -1);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);

        boolean quit = false;

        while (!quit) {         
            // Clear the screen.
            GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);

            // Begin drawing
            GL11.glBegin(GL11.GL_TRIANGLES);
                // Top & Red
                GL11.glColor3f(1.0f, 0.0f, 0.0f);
                GL11.glVertex2f(0.0f, 1.0f);

                // Right & Green
                GL11.glColor3f(0.0f, 1.0f, 0.0f);
                GL11.glVertex2f(1.0f, 1.0f);

                // Left & Blue
                GL11.glColor3f(0.0f, 0.0f, 1.0f);
                GL11.glVertex2f(1.0f, -1.0f);
            GL11.glEnd();

            Display.update();

            if (Display.isCloseRequested() || Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))
                quit = true;
        }

        Display.destroy();
    }

    public static void main(String args[]) {
        ColoredTriangle ct = new ColoredTriangle();
        ct.start();
    }

}

5
2018-01-14 05:35


asal


Jawaban:


Ini bekerja baik-baik saja, hanya saja segitiga Anda adalah 1 unit tinggi dan jendela Anda adalah 480 unit tinggi, sehingga hanya muncul sebagai satu piksel di sudut.

Jika Anda mengganti GL11.glOrtho(0, 640, 480, 0, 1, -1); dengan GL11.glOrtho(-3.2, 3.2, -2.4, 2.4, -1, 1); maka Anda akan melihat semuanya baik-baik saja.


7
2018-01-14 05:56