Hallo,
ich versuche anhand eines buches jogl zu lernen, hab mir die ersten paar seiten durchgelesen, und auch die ersten beispiele programmiert. Das buch ist leider nicht mehr aktuell ... 2009 und ich musste einige sachen abändern, um die beispiele funktionsfähig zu machen. Leider hab ich jetzt immer in jedem beispiel (seit nummer 3) vertikale streifen (schwarz) im bild, die ihre position und anzahl verändern, wenn ich das fenster größer (bzw. kleiner) mache.
Da die beispiele immer aufeinander aufbauen poste ich die ersten 3, bitte nummer 3 ausprobieren, da treten die zum ersten mal auf.
J1_0_Point.java
J1_1_Point.java
J1_2_Line.java
so sehen die steifen dann aus:
Danke für die Hilfe!
ich versuche anhand eines buches jogl zu lernen, hab mir die ersten paar seiten durchgelesen, und auch die ersten beispiele programmiert. Das buch ist leider nicht mehr aktuell ... 2009 und ich musste einige sachen abändern, um die beispiele funktionsfähig zu machen. Leider hab ich jetzt immer in jedem beispiel (seit nummer 3) vertikale streifen (schwarz) im bild, die ihre position und anzahl verändern, wenn ich das fenster größer (bzw. kleiner) mache.
Da die beispiele immer aufeinander aufbauen poste ich die ersten 3, bitte nummer 3 ausprobieren, da treten die zum ersten mal auf.
J1_0_Point.java
Java:
import java.awt.BorderLayout;
import javax.media.opengl.GL;
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;
public class J1_0_Point extends JFrame implements GLEventListener{
private static final long serialVersionUID = 1L;
static int HEIGHT = 600, WIDTH = 600;
static GL gl;
static GLCanvas canvas;
static GLCapabilities capabilities;
public J1_0_Point(){
capabilities = new GLCapabilities(GLProfile.getDefault());
canvas = new GLCanvas();
canvas.addGLEventListener(this);
add(canvas, BorderLayout.CENTER);
}
@Override
public void display(GLAutoDrawable arg0) {
gl.getGL2().glBegin(GL2.GL_POINTS);
gl.getGL2().glVertex2i(WIDTH/2, HEIGHT/2);
gl.getGL2().glEnd();
}
@Override
public void dispose(GLAutoDrawable arg0) {
System.exit(0);
}
@Override
public void init(GLAutoDrawable arg0) {
gl = arg0.getGL();
gl.getGL2().glColor3f(1.0f, 0.0f, 0.0f);
}
@Override
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3,
int arg4) {
WIDTH = arg3;
HEIGHT = arg4;
gl.getGL2().glMatrixMode(GL2.GL_PROJECTION);
gl.getGL2().glClear(GL2.GL_COLOR_BUFFER_BIT);
gl.getGL2().glLoadIdentity();
gl.getGL2().glOrtho(0, arg3, 0, arg4, -1.0, 1.0);
}
public static void main(String[] args){
J1_0_Point frame = new J1_0_Point();
frame.setSize(WIDTH, HEIGHT);
frame.setVisible(true);
}
}
J1_1_Point.java
Java:
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import com.jogamp.opengl.util.Animator;
public class J1_1_Point extends J1_0_Point{
private static final long serialVersionUID = 1L;
static Animator ani;
public J1_1_Point(){
capabilities.setDoubleBuffered(false);
}
public void init(GLAutoDrawable dr){
super.init(dr);
gl.getGL2().glColor3f(1.0f, 0.0f, 0.0f);
gl.getGL2().glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.getGL2().glClear(GL2.GL_COLOR_BUFFER_BIT);
ani = new Animator(canvas);
ani.start();
}
public void display(GLAutoDrawable dr){
double x = Math.random()*WIDTH;
double y = Math.random()*HEIGHT;
gl.getGL2().glBegin(GL2.GL_POINTS);
gl.getGL2().glVertex2d(x, y);
gl.getGL2().glEnd();
}
public static void main(String[] args){
J1_1_Point f = new J1_1_Point();
f.setTitle("Test 2");
f.setSize(WIDTH, HEIGHT);
f.setVisible(true);
}
}
J1_2_Line.java
Java:
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
public class J1_2_Line extends J1_1_Point{
private static final long serialVersionUID = 1L;
public void display(GLAutoDrawable dr){
int x0, y0, xn, yn, dx, dy;
do{
x0 = (int) (Math.random()*WIDTH);
y0 = (int) (Math.random()*HEIGHT);
xn = (int) (Math.random()*WIDTH);
yn = (int) (Math.random()*HEIGHT);
dx = xn-x0;
dy = yn-y0;
if(x0>xn)
dx = -dx;
if(y0>yn)
dy = -dy;
}while(dy>dx);
gl.getGL2().glColor3f(0f, 1f, 0f);
line(x0, y0, xn, yn);
}
public void line(int x0, int y0, int xn, int yn){
int x;
float m,y;
m = (float) (yn-y0) / (xn-x0);
x =x0;
y = y0;
while(x<xn+1){
drawPoint(x,y);
x++;
y += m;
}
}
public void drawPoint(double x, double y){
gl.getGL2().glBegin(GL2.GL_POINTS);
gl.getGL2().glVertex2d(x, y);
gl.getGL2().glEnd();
}
public static void main(String[] args){
J1_2_Line f = new J1_2_Line();
f.setTitle("Test 3");
f.setSize(WIDTH, HEIGHT);
f.setVisible(true);
}
}
so sehen die steifen dann aus:
Danke für die Hilfe!