void redraw(GL2 gl) { if (uncaught != null) throw (new RuntimeException( "Exception occurred during init but was somehow discarded", uncaught)); if ((state == null) || (state.cgl.gl != gl)) state = new GLState.Applier(new CurrentGL(gl, glconf)); Frame f; synchronized (curdraw) { f = curdraw[0]; curdraw[0] = null; } if ((f != null) && (f.on.gl == gl)) { GPUProfile.Frame curgf = null; if (Config.profilegpu) curgf = gprof.new Frame((GL3) gl); if (f.pf != null) f.pf.tick("awt"); f.buf.run(gl); GOut.checkerr(gl); if (f.pf != null) f.pf.tick("gl"); if (curgf != null) { curgf.tick("draw"); curgf.fin(); } if (glconf.pref.dirty) { glconf.pref.save(); glconf.pref.dirty = false; } f.doneat = System.currentTimeMillis(); } }
public void atext(String text, Coord c, double ax, double ay) { Text t = Text.render(text); Tex T = t.tex(); Coord sz = t.sz(); image(T, c.add((int) ((double) sz.x * -ax), (int) ((double) sz.y * -ay))); T.dispose(); checkerr(); }
public void poly(Coord... c) { st.set(cur2d); apply(); gl.glBegin(GL2.GL_POLYGON); for (Coord vc : c) vertex(vc); gl.glEnd(); checkerr(); }
private void create(GOut g) { BGL gl = g.gl; t = new TexOb(g); gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP, t); gl.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); gl.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); fill(g); checkerr(gl); }
public void line(Coord c1, Coord c2, double w) { st.set(cur2d); apply(); gl.glLineWidth((float) w); gl.glBegin(GL.GL_LINES); vertex(c1); vertex(c2); gl.glEnd(); checkerr(); }
public void line(Coord c1, Coord c2, double w) { texsel(-1); gl.glLineWidth((float) w); gl.glBegin(GL.GL_LINES); glcolor(); vertex(c1); vertex(c2); gl.glEnd(); checkerr(); }
public void frect(Coord ul, Coord sz) { glcolor(); texsel(-1); gl.glBegin(GL.GL_QUADS); vertex(ul); vertex(ul.add(new Coord(sz.x, 0))); vertex(ul.add(sz)); vertex(ul.add(new Coord(0, sz.y))); gl.glEnd(); checkerr(); }
public void frect(Coord c1, Coord c2, Coord c3, Coord c4) { st.set(cur2d); apply(); gl.glBegin(GL2.GL_QUADS); vertex(c1); vertex(c2); vertex(c3); vertex(c4); gl.glEnd(); checkerr(); }
public void frect(Coord c1, Coord c2, Coord c3, Coord c4) { glcolor(); texsel(-1); gl.glBegin(GL.GL_QUADS); vertex(c1); vertex(c2); vertex(c3); vertex(c4); gl.glEnd(); checkerr(); }
/* Draw texture at c, clipping everything outside ul to ul + sz. */ public void image(Tex tex, Coord c, Coord ul, Coord sz) { if (tex == null) return; st.set(cur2d); ul = ul.add(this.tx); Coord br = ul.add(sz); if (ul.x < this.ul.x) ul.x = this.ul.x; if (ul.y < this.ul.y) ul.y = this.ul.y; if (br.x > this.ul.x + this.sz.x) br.x = this.ul.x + this.sz.x; if (br.y > this.ul.y + this.sz.y) br.y = this.ul.y + this.sz.y; tex.crender(this, c.add(this.tx), ul, br.sub(ul)); checkerr(); }
public void rect(Coord ul, Coord sz) { st.set(cur2d); apply(); gl.glLineWidth(1); gl.glBegin(GL.GL_LINE_LOOP); vertex(ul.x + 0.5f, ul.y + 0.5f); vertex(ul.x + sz.x - 0.5f, ul.y + 0.5f); vertex(ul.x + sz.x - 0.5f, ul.y + sz.y - 0.5f); vertex(ul.x + 0.5f, ul.y + sz.y - 0.5f); gl.glEnd(); checkerr(); }
public void fellipse(Coord c, Coord r, int a1, int a2) { st.set(cur2d); apply(); gl.glBegin(GL.GL_TRIANGLE_FAN); vertex(c); for (int i = a1; i <= a2; i += 5) { double a = (i * Math.PI * 2) / 360.0; vertex(c.add((int) (Math.cos(a) * r.x), -(int) (Math.sin(a) * r.y))); } gl.glEnd(); checkerr(); }
public void prect(Coord c, Coord ul, Coord br, double a) { st.set(cur2d); apply(); gl.glEnable(GL2.GL_POLYGON_SMOOTH); gl.glBegin(GL.GL_TRIANGLE_FAN); vertex(c); vertex(c.add(0, ul.y)); double p2 = Math.PI / 2; all: { float tc; tc = (float) (Math.tan(a) * -ul.y); if ((a > p2) || (tc > br.x)) { vertex(c.x + br.x, c.y + ul.y); } else { vertex(c.x + tc, c.y + ul.y); break all; } tc = (float) (Math.tan(a - (Math.PI / 2)) * br.x); if ((a > p2 * 2) || (tc > br.y)) { vertex(c.x + br.x, c.y + br.y); } else { vertex(c.x + br.x, c.y + tc); break all; } tc = (float) (-Math.tan(a - Math.PI) * br.y); if ((a > p2 * 3) || (tc < ul.x)) { vertex(c.x + ul.x, c.y + br.y); } else { vertex(c.x + tc, c.y + br.y); break all; } tc = (float) (-Math.tan(a - (3 * Math.PI / 2)) * -ul.x); if ((a > p2 * 4) || (tc < ul.y)) { vertex(c.x + ul.x, c.y + ul.y); } else { vertex(c.x + ul.x, c.y + tc); break all; } tc = (float) (Math.tan(a) * -ul.y); vertex(c.x + tc, c.y + ul.y); } gl.glEnd(); gl.glDisable(GL2.GL_POLYGON_SMOOTH); checkerr(); }
public void fellipse(Coord c, Coord r, int a1, int a2) { glcolor(); texsel(-1); gl.glBegin(GL.GL_TRIANGLE_FAN); vertex(c); for (int i = a1; i < a2; i += 5) { double a = (i * Math.PI * 2) / 360.0; vertex(c.add((int) (Math.cos(a) * r.x), -(int) (Math.sin(a) * r.y))); } double a = (a2 * Math.PI * 2) / 360.0; vertex(c.add((int) (Math.cos(a) * r.x), -(int) (Math.sin(a) * r.y))); gl.glEnd(); checkerr(); }
public void frect(Coord ul, Coord sz) { ul = tx.add(ul); Coord br = ul.add(sz); if (ul.x < this.ul.x) ul.x = this.ul.x; if (ul.y < this.ul.y) ul.y = this.ul.y; if (br.x > this.ul.x + this.sz.x) br.x = this.ul.x + this.sz.x; if (br.y > this.ul.y + this.sz.y) br.y = this.ul.y + this.sz.y; if ((ul.x >= br.x) || (ul.y >= br.y)) return; st.set(cur2d); apply(); gl.glBegin(GL2.GL_QUADS); gl.glVertex2i(ul.x, ul.y); gl.glVertex2i(br.x, ul.y); gl.glVertex2i(br.x, br.y); gl.glVertex2i(ul.x, br.y); gl.glEnd(); checkerr(); }
public void poly2(Object... c) { st.set(cur2d); st.put(States.color, States.vertexcolor); apply(); gl.glBegin(GL2.GL_POLYGON); for (int i = 0; i < c.length; i += 2) { Coord vc = (Coord) c[i]; Color col = (Color) c[i + 1]; gl.glColor4f( (col.getRed() / 255.0f), (col.getGreen() / 255.0f), (col.getBlue() / 255.0f), (col.getAlpha() / 255.0f)); vertex(vc); } gl.glEnd(); checkerr(); }
public void ftriangle(Coord center, int size) { if (size < 1) return; double sqrt3 = Math.sqrt(3); double Orad = (sqrt3 * size) / 3; double Irad = (sqrt3 * size) / 6; Coord c1, c2, c3; c1 = new Coord(center.x, center.y - (int) Orad); c2 = new Coord(center.x + (int) (size / 2) - 1, center.y + (int) Irad); c3 = new Coord(center.x - (int) (size / 2) + 1, center.y + (int) Irad); glcolor(); texsel(-1); gl.glBegin(GL.GL_TRIANGLE_STRIP); vertex(c1); vertex(c2); vertex(c3); gl.glEnd(); checkerr(); }
public void ftexrect(Coord ul, Coord sz, GLState s, float tl, float tt, float tr, float tb) { ul = tx.add(ul); Coord br = ul.add(sz); Coord ult = new Coord(0, 0); Coord brt = new Coord(sz); if (ul.x < this.ul.x) { ult.x += this.ul.x - ul.x; ul.x = this.ul.x; } if (ul.y < this.ul.y) { ult.y += this.ul.y - ul.y; ul.y = this.ul.y; } if (br.x > this.ul.x + this.sz.x) { brt.x -= br.x - (this.ul.x + this.sz.x); br.x = this.ul.x + this.sz.x; } if (br.y > this.ul.y + this.sz.y) { brt.y -= br.y - (this.ul.y + this.sz.y); br.y = this.ul.y + this.sz.y; } if ((ul.x >= br.x) || (ul.y >= br.y)) return; st.set(cur2d); state(s); apply(); float l = tl + ((tr - tl) * ((float) ult.x) / ((float) sz.x)); float t = tt + ((tb - tt) * ((float) ult.y) / ((float) sz.y)); float r = tl + ((tr - tl) * ((float) brt.x) / ((float) sz.x)); float b = tt + ((tb - tt) * ((float) brt.y) / ((float) sz.y)); gl.glBegin(GL2.GL_QUADS); gl.glTexCoord2f(l, b); gl.glVertex2i(ul.x, ul.y); gl.glTexCoord2f(r, b); gl.glVertex2i(br.x, ul.y); gl.glTexCoord2f(r, t); gl.glVertex2i(br.x, br.y); gl.glTexCoord2f(l, t); gl.glVertex2i(ul.x, br.y); gl.glEnd(); checkerr(); }
void redraw(GL2 gl) { if ((state == null) || (state.cgl.gl != gl)) state = new GLState.Applier(new CurrentGL(gl, glconf)); Frame f = curdraw; if ((f != null) && (f.on.gl == gl)) { GPUProfile.Frame curgf = null; if (Config.profilegpu) curgf = gprof.new Frame((GL3) gl); if (f.pf != null) f.pf.tick("awt"); f.buf.run(gl); GOut.checkerr(gl); if (f.pf != null) f.pf.tick("gl"); if (curgf != null) { curgf.tick("draw"); curgf.fin(); } if (glconf.pref.dirty) { glconf.pref.save(); glconf.pref.dirty = false; } f.doneat = System.currentTimeMillis(); } }
public ShaderOb(GL2 gl, int type) { super(gl); id = gl.glCreateShaderObjectARB(type); GOut.checkerr(gl); }
/* Draw texture at c, with the extra state s applied. */ public void image(Tex tex, Coord c, GLState s) { st.set(cur2d); if (s != null) state(s); tex.crender(this, c.add(tx), ul, sz); checkerr(); }
public void image(Tex tex, Coord c, Coord ul, Coord sz) { if (tex == null) return; tex.crender(this, c.add(this.ul), this.ul.add(ul), sz); checkerr(); }
private void checkerr() { checkerr(gl); }
/* Draw texture at c, scaling it to sz. */ public void image(Tex tex, Coord c, Coord sz) { if (tex == null) return; st.set(cur2d); tex.crender(this, c.add(tx), ul, this.sz, sz); checkerr(); }