Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Inne] Rysowanie pixeli w dość ciekawy sposób.


Gość povskill

Rekomendowane odpowiedzi

Opublikowano

 final Graphics2D g = (Graphics2D) getBufferStrategy().getDrawGraphics();
                    if (g instanceof SunGraphics2D) {
                        if (((SunGraphics2D) g).surfaceData instanceof D3DSurfaceData) {

                            D3DRenderQueue rq = D3DRenderQueue.getInstance();
                            rq.lock();
                            // ;
                            RenderBuffer buf = rq.getBuffer();
                            try {
                                for (int j = 0; j < getWidth(); j++) {
                                for (int l = 0; l < getHeight(); l++) {
                                    rq.ensureCapacity(8);
                                    buf.putInt(BufferedOpCodes.SET_COLOR);
                                    buf.putInt(random.nextInt(255) * random.nextInt(255) * random.nextInt(255));
                                    rq.ensureCapacity(12);
                                    buf.putInt(BufferedOpCodes.DRAW_PIXEL);
                                    buf.putInt(j);
                                    buf.putInt(l);
                                }

                            }

                            } finally {
                            rq.unlock();
                        }
                            // buf.putInt(BufferedOpCodes.SET_COLOR);
                            // buf.putInt(Color.WHITE.getRGB());
                        } else if (((SunGraphics2D) g).surfaceData instanceof OGLSurfaceData) {
                            OGLRenderQueue rq = OGLRenderQueue.getInstance();
                            RenderBuffer buf = rq.getBuffer();
                            rq.lock();
                            // ;
                            try {
                                for (int j = 0; j < getWidth(); j++) {
                                    for (int l = 0; l < getHeight(); l++) {
                                        rq.ensureCapacity(8);
                                        buf.putInt(BufferedOpCodes.SET_COLOR);
                                        buf.putInt(random.nextInt(255) * random.nextInt(255) * random.nextInt(255));
                                        rq.ensureCapacity(12);
                                        buf.putInt(BufferedOpCodes.DRAW_PIXEL);
                                        buf.putInt(j);
                                        buf.putInt(l);
                                        ((SunGraphics2D) g).surfaceData.markDirty();

                                    }

                                }

                            } finally {
                                rq.unlock();
                            }
                        }


                    }

                    g.setColor(Color.WHITE);
                    g.drawString("Hohoho", 0, 10);
                    g.dispose();

Wszystko przechodzi przez natywy:

 

New src/share/native/sun/java2d/opengl/OGLRenderQueue.c

 

jdk7/hotspot/jdk: src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp@75755e92430c

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...