Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подскажите что нужно для OpenGL 1.1 - JOGL?

29K
10 ноября 2011 года
webdev
56 / / 08.05.2010
Подскажите пожалуйста, а то сил уже нету, задолбался уже тыкать пальцем в небо, а где расписано все нету!

Значит так, мне предстоит делать проект на OpenGL 1.1 - поскольку на С/С++ возвращаться не хочется, - выбрал для себя альтернативу JOGL - но ничего толком сделать не могу, те так пишут, те так.
Ссылки битые - насколько понял JOGL был раньше здесь http://java.net/projects/jogl/
Теперь скачать можно по этому адресу. http://jogamp.org/

Значит так, вроде все настроил - скачал jogl-2.0-b367-20110405-windows-amd64, добавил 4 класса в проект jogl-all.jar ..и так д...

Но какой пример не посмотрю - всегда трабла с классами!!!!
Я не могу понять - каждый пишет по своему, ткните пож пальцем где мне смотреть - хоть на турецком, а то я за неделю так и не продвинулся. :(

Конкретный пример: взял любой класс отсюда
Код:
package MyPack;

import java.awt.event.*;
import javax.swing.*;

import java.nio.*;

import javax.media.opengl.DebugGL2;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.awt.GLCanvas;
import javax.media.opengl.glu.*;
import com.jogamp.opengl.util.*;

public class MyFrame
  extends JFrame
    implements GLEventListener, KeyListener
{
  private GLU glu;
  private GLCapabilities caps;
  private GLCanvas canvas;
  //
  private static final int PT = 1;
  private static final int STROKE = 2;
  private static final int END = 3;

  // * C struct. Compare this to charpoint class.
  // typedef struct charpoint
  // {
  // GLfloat x, y;
  // int type;
  // } CP;
  private class charpoint
  {
    public float x;
    public float y;
    public int type;

    public charpoint(float x, float y, int type)
    {
      this.x = x;
      this.y = y;
      this.type = type;
    }
  }

  // * Saved here from original for you to see the difference
  // CP Adata[] =
  // {
  // { 0, 0, PT}, {0, 9, PT}, {1, 10, PT}, {4, 10, PT},
  // {5, 9, PT}, {5, 0, STROKE}, {0, 5, PT}, {5, 5, END}
  // };
  charpoint Adata[] =
  { new charpoint(0, 0, PT), new charpoint(0, 9, PT), //
    new charpoint(1, 10, PT), new charpoint(4, 10, PT),//
    new charpoint(5, 9, PT), new charpoint(5, 0, STROKE),//
    new charpoint(0, 5, PT), new charpoint(5, 5, END) };

  charpoint Edata[] =
  { new charpoint(5, 0, PT), new charpoint(0, 0, PT), //
    new charpoint(0, 10, PT), new charpoint(5, 10, STROKE),//
    new charpoint(0, 5, PT), new charpoint(4, 5, END) };

  charpoint Pdata[] =
  { new charpoint(0, 0, PT), new charpoint(0, 10, PT),//
    new charpoint(4, 10, PT), new charpoint(5, 9, PT),//
    new charpoint(5, 6, PT), new charpoint(4, 5, PT), //
    new charpoint(0, 5, END) };

  charpoint Rdata[] =
  { new charpoint(0, 0, PT), new charpoint(0, 10, PT),//
    new charpoint(4, 10, PT), new charpoint(5, 9, PT),//
    new charpoint(5, 6, PT), new charpoint(4, 5, PT),//
    new charpoint(0, 5, STROKE), new charpoint(3, 5, PT),//
    new charpoint(5, 0, END) };

  charpoint Sdata[] =
  { new charpoint(0, 1, PT), new charpoint(1, 0, PT), //
    new charpoint(4, 0, PT), new charpoint(5, 1, PT),//
    new charpoint(5, 4, PT), new charpoint(4, 5, PT), //
    new charpoint(1, 5, PT), new charpoint(0, 6, PT), //
    new charpoint(0, 9, PT), new charpoint(1, 10, PT),//
    new charpoint(4, 10, PT), new charpoint(5, 9, END) };

  // char *test1 = "A SPARE SERAPE APPEARS AS"; C char ptr to str ...
  // char *test2 = "APES PREPARE RARE PEPPERS";
  private String test1 = "A SPARE SERAPE APPEARS AS";// String object
  private String test2 = "APES PREPARE RARE PEPPERS";

  public MyFrame()
  {
    super("stroke");

    caps = new GLCapabilities();
    canvas = new GLCanvas(caps);
    canvas.addGLEventListener(this);
    canvas.addKeyListener(this);
 
    getContentPane().add(canvas);
  }

  public void run()
  {
    setSize(440, 120);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    canvas.requestFocusInWindow();
  }

  public static void main(String[] args)
  {
    new MyFrame().run();
  }

  /* Create a display list for each of 6 characters */
  public void init(GLAutoDrawable drawable)
  {
    GL gl = drawable.getGL();
    glu = new GLU();

    int base;

    gl.glShadeModel(GL.GL_FLAT);

    base = gl.glGenLists(128);
    gl.glListBase(base);
    gl.glNewList(base + 'A', GL.GL_COMPILE);
    drawLetter(gl, Adata);
    gl.glEndList();
    gl.glNewList(base + 'E', GL.GL_COMPILE);
    drawLetter(gl, Edata);
    gl.glEndList();
    gl.glNewList(base + 'P', GL.GL_COMPILE);
    drawLetter(gl, Pdata);
    gl.glEndList();
    gl.glNewList(base + 'R', GL.GL_COMPILE);
    drawLetter(gl, Rdata);
    gl.glEndList();
    gl.glNewList(base + 'S', GL.GL_COMPILE);
    drawLetter(gl, Sdata);
    gl.glEndList();
    gl.glNewList(base + ' ', GL.GL_COMPILE);
    gl.glTranslatef(8.0f, 0.0f, 0.0f);
    gl.glEndList();
  }

  public void display(GLAutoDrawable drawable)
  {
    GL gl = drawable.getGL();
    //
    gl.glClear(GL.GL_COLOR_BUFFER_BIT);
    gl.glColor3f(1.0f, 1.0f, 1.0f);

    gl.glPushMatrix();
    gl.glScalef(2.0f, 2.0f, 2.0f);
    gl.glTranslatef(10.0f, 30.0f, 0.0f);
    this.printStrokedString(gl, test1);
    gl.glPopMatrix();

    gl.glPushMatrix();
    gl.glScalef(2.0f, 2.0f, 2.0f);
    gl.glTranslatef(10.0f, 13.0f, 0.0f);
    this.printStrokedString(gl, test2);
    gl.glPopMatrix();

    gl.glFlush();
  }

  public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h)
  {
    GL gl = drawable.getGL();

    gl.glViewport(0, 0, w, h);
    gl.glMatrixMode(GL.GL_PROJECTION);
    gl.glLoadIdentity();
    glu.gluOrtho2D(0, w, 0, h);
    gl.glMatrixMode(GL.GL_MODELVIEW);
    gl.glLoadIdentity();
  }

  public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,
      boolean deviceChanged)
  {
  }

  /*
   * interprets the instructions from the array for that letter and renders the
   * letter with line segments.
   */

  private void drawLetter(GL gl, charpoint[] l)
  {
    int i = 0;
    gl.glBegin(GL.GL_LINE_STRIP);
    while (i < l.length)
    {
      switch (l.type) {
        case PT:
          gl.glVertex2f(l.x, l.y);
          break;
        case STROKE:
          gl.glVertex2f(l.x, l.y);
          gl.glEnd();
          gl.glBegin(GL.GL_LINE_STRIP);
          break;
        case END:
          gl.glVertex2f(l.x, l.y);
          gl.glEnd();
          gl.glTranslatef(8.0f, 0.0f, 0.0f);
          return;
      }
      i++;// System.out.println(i+" ");
    }
  }

  // private void printStrokedString(char *s)
  private void printStrokedString(GL gl, String s)
  {
    int len = s.length();
    ByteBuffer str = BufferUtil.newByteBuffer(len);
    str.put(s.getBytes());
    str.rewind();
    gl.glCallLists(len, GL.GL_BYTE, str);
  }

  public void keyTyped(KeyEvent key)
  {
  }

  public void keyPressed(KeyEvent key)
  {
    switch (key.getKeyCode()) {
      case KeyEvent.VK_ESCAPE:
        System.exit(0);
        break;

      default:
        break;
    }
  }

  public void keyReleased(KeyEvent key)
  {
  }

@Override
public void dispose(GLAutoDrawable arg0) {
    // TODO Auto-generated method stub
   
}
}


скажите пожалуйста, почему люди писали примеры,
- а у меня не работает КОНСТРУКТОР в 96 строке???
- переменная GL gl не видит методов gl.glVertex2f, glScalef, gl.glPushMatrix() и так д!
- посмотрел в http://jogamp.org/deployment/jogamp-next/j...adoc_jogl_spec/ - а эти методы в классе DebugGL2 - с какой радости?


Подскажите, я понимаю, что много текста, и так д... вопрос не оч конкретный, но все же, я думаю на него достаточно 2 строки ответа, чтоб я понял что к чему
Заранее спасибо.!
14
10 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
glVertex2f это метод объявленный в интерфейсе GL2. Я думаю это какие-то очень старые примеры
29K
11 ноября 2011 года
webdev
56 / / 08.05.2010
А где новые то взять? Как различать? Старые, новые?
Может подскажете откуда читать, а то ничего толкового не нахожу.
Спасибо.
14
12 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
Я с вашей подачи эти библиотеки первый раз увидел. Т.е. я не знаю. Просто говорю как это порой бывает А если новых примеров нет в природе, что бы вы стали делать?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог