Kamis, 22 Januari 2015

CG[LWJGL0014] || Fullscreen

Table of contents



Penggunaan Mode Fullscreen
Pada tutorial sebelumnya kita telah membahas cara membuat window OpenGL menggunakan class Display dengan hanya menggunakan dua baris code:

Display.setDisplayMode(new DisplayMode(width,height));
Display.create();

untuk mengatifkan mode fullscreen dapat dilakukan dengan memanggil method Display.setFullscreen(true) seperti contoh berikut:
Display.setDisplayMode(displayMode);
Display.setFullscreen(true);
Display.create();

Apa itu Display Mode?
Display Mode adalah class yang membungkus berbagai properti untuk membentuk Display. berikut ini beberapa yang termasuk di dalamnya:

  • getWidth () - untuk mendapatkan nilai lebar Display dalam piksel.
  • getHeight () - untuk mendapatkan nilai ketinggian Display dalam piksel.
  • getBitsPerPixel () - untuk mendapatkan nilai Bit per pixel, juga kadang-kadang dikenal sebagai jumlah warna.
  • getFrequency () - untuk mendapatkan nilai tingkata Refresh atau frekuensi frame gambar.

nilai inisial Display Mode adalah sama dengan resolusi komputer desktop. Display mode komputer desktop dapat diambil setiap saat dengan memanggil method Display.getDesktopDisplayMode().

Memeriksa dukungan Display Mode Fullscreen
Daftar resolusi fullscreen yang didukung oleh kartu grafis dapat diketahui dengan memanggil method Display.getAvailableDisplayModes() seperti contoh berikut:

DisplayMode[] modes = Display.getAvailableDisplayModes();

for (int i=0;i<modes.length;i++) {
    DisplayMode current = modes[i];
    System.out.println(current.getWidth() + "x" + current.getHeight() + "x" +
                        current.getBitsPerPixel() + " " + current.getFrequency() + "Hz");
}

Display mode ditetapkan menggunakan method Display.setDisplayMode(). Jika Display telah dibuat (melalui pemanggilan method Display.create()) maka Display Mode yang baru akan ditetapkan saat method Display.create dipanggil lagi.

untuk membuat switch fullscreen mode- windowed mode dapat dilakukan dengan memanggil method Display.setFullscreen(boolean), untuk nilai input parameter true maka mode fullscreen diaktifkan sedangkan untuk input parameter false akan mengaktifkan mode window.

Berikut ini contoh code untuk melakukan switch mode fullscreen-windowed dengan resolusi tertentu:

/**
 * Set the display mode to be used
 *
 * @param width The width of the display required
 * @param height The height of the display required
 * @param fullscreen True if we want fullscreen mode
 */
public void setDisplayMode(int width, int height, boolean fullscreen) {

    // return if requested DisplayMode is already set
    if ((Display.getDisplayMode().getWidth() == width) &&
        (Display.getDisplayMode().getHeight() == height) &&
    (Display.isFullscreen() == fullscreen)) {
        return;
    }

    try {
        DisplayMode targetDisplayMode = null;
       
    if (fullscreen) {
        DisplayMode[] modes = Display.getAvailableDisplayModes();
        int freq = 0;
               
        for (int i=0;i<modes.length;i++) {
            DisplayMode current = modes[i];
                   
        if ((current.getWidth() == width) && (current.getHeight() == height)) {
            if ((targetDisplayMode == null) || (current.getFrequency() >= freq)) {
                if ((targetDisplayMode == null) || (current.getBitsPerPixel() > targetDisplayMode.getBitsPerPixel())) {
                targetDisplayMode = current;
                freq = targetDisplayMode.getFrequency();
                        }
                    }

            // if we've found a match for bpp and frequence against the
            // original display mode then it's probably best to go for this one
            // since it's most likely compatible with the monitor
            if ((current.getBitsPerPixel() == Display.getDesktopDisplayMode().getBitsPerPixel()) &&
                        (current.getFrequency() == Display.getDesktopDisplayMode().getFrequency())) {
                            targetDisplayMode = current;
                            break;
                    }
                }
            }
        } else {
            targetDisplayMode = new DisplayMode(width,height);
        }

        if (targetDisplayMode == null) {
            System.out.println("Failed to find value mode: "+width+"x"+height+" fs="+fullscreen);
            return;
        }

        Display.setDisplayMode(targetDisplayMode);
        Display.setFullscreen(fullscreen);
           
    } catch (LWJGLException e) {
        System.out.println("Unable to setup mode "+width+"x"+height+" fullscreen="+fullscreen + e);
    }
}

Berikut ini Source Code lengkap untuk melakukan switch mode fullscreen menggunakan key-f di keyboard:





SELAMAT MENCOBA


Referensi:
http://wiki.lwjgl.org/
http://ninjacave.com/

Tidak ada komentar:

Posting Komentar

/*SYNTAX HIGHLIGHTER*/