Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
1

OpenGl + Java, JOGL

20.09.2015, 16:56. Показов 1323. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, я пытаюсь освоить ОпенГл на языке джава.

К сожалению, я не смог найти нормальных уроков, где использовались бы библиотеки последней версии.

Пытаюсь вывести треугольник на экран. Но не получается. Выводит также пустую рамку. Не могли бы помочь?


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package jogl;
 
import com.jogamp.common.nio.Buffers;
import com.jogamp.opengl.GL;
import static com.jogamp.opengl.GL.GL_ARRAY_BUFFER;
import static com.jogamp.opengl.GL.GL_COLOR_BUFFER_BIT;
import static com.jogamp.opengl.GL.GL_DEPTH_BUFFER_BIT;
import com.jogamp.opengl.GL4;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLCapabilities;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.GLProfile;
import static com.jogamp.opengl.GLProfile.GL2;
import static com.jogamp.opengl.GLProfile.GL4;
import com.jogamp.opengl.awt.GLCanvas;
import java.nio.FloatBuffer;
import javax.swing.JFrame;
 
/**
 *
 * @author 123
 */
public class JOGL extends JFrame implements GLEventListener {
     int width = 600;
       int height = 600;
      
   
   // элементы массива    
     static  float[] vertices_position = {
        0.0f, 0.0f,
        0.5f, 0.0f,
        0.5f, 0.5f,
 
    };
    
     FloatBuffer bufPos = Buffers.newDirectFloatBuffer(vertices_position);
     
     int vertexbuffer[] = new int[1];
       
  public JOGL() {
 
      
    super("Minimal OpenGL");
         GLProfile profile = GLProfile.get(GLProfile.GL4);
         GLCapabilities capabilities = new GLCapabilities(profile);
 
         GLCanvas canvas = new GLCanvas(capabilities);
         canvas.addGLEventListener(this);
 
        this.setName("Minimal OpenGL");
         this.getContentPane().add(canvas);
 
        this.setSize(width, height);
        this.setLocationRelativeTo(null);
         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         this.setVisible(true);
        this.setResizable(false);
         canvas.requestFocusInWindow();
  
  
  }  
  private int program;
 
    @Override
    public void init(GLAutoDrawable glad) {
           GL4 gl = glad.getGL().getGL4();
           gl.glClearColor(0.392f, 0.584f, 0.929f, 1.0f);
      program = gl.glCreateProgram();
 
 
    }
 
    @Override
    public void dispose(GLAutoDrawable glad) {
   
    }
 
    @Override
    public void display(GLAutoDrawable glad) {
          GL4 gl = glad.getGL().getGL4();
       
     //     gl.glFlush();
          
            gl.glGenBuffers(1, vertexbuffer,0);
  gl.glBindBuffer(GL.GL_ARRAY_BUFFER,vertexbuffer[0]);
  gl.glBufferData(GL.GL_ARRAY_BUFFER, bufPos.capacity(), bufPos, GL.GL_STATIC_DRAW);
          
          gl.glEnableVertexAttribArray(0);
          gl.glBindBuffer(GL.GL_ARRAY_BUFFER,vertexbuffer[0]);
       
          gl.glVertexAttribPointer(
   0,                  // Атрибут 0. Подробнее об этом будет рассказано в части, посвященной шейдерам.
   3,                  // Размер
   GL.GL_FLOAT,          // Тип
   false,          // Указывает, что значения не нормализованы
   0,                  // Шаг
   0            // Смещение массива в буфере
);
 
  gl.glDrawArrays(GL.GL_TRIANGLES, 0, 3);
        gl.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    
    }
 
    @Override
    public void reshape(GLAutoDrawable glad, int i, int i1, int i2, int i3) {
 
    }
 
    
    
      public static void main(String args[ ]) 
      { 
       JOGL n = new JOGL();
      } 
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.09.2015, 16:56
Ответы с готовыми решениями:

Java+JOGL+Texture+Transparent
Изучаю OpenGL для Java. Попытался вывести картинку при помощи текстуры. Картинка выводится, но...

Применение OpenGl (JOGL) библиотеки
Скачал файлы библиотеки Затем извлек из архива. Теперь не могу разобраться в какую папку java...

Java и OpenGL. Java и 3Д графика
Здравствуйте, уважаемые форумчане!:) Хочу создать небольшую 3Д игрушку на Java. Давно слышал...

OpenGl в Java
Добрый день. Задача разработать примитивный 3d бильярд на OpenGL. В качестве языка для разработки...

1
27 / 27 / 3
Регистрация: 03.04.2015
Сообщений: 105
21.09.2015, 18:02 2
Я не в курсе за JOGL, но есть мнение, что нужно хоть что-нибудь почитать про GL. Во-первых, ты генерируешь новый буфер вершин каждый кадр, что неправильно в твоём случае, во-вторых, у тебя нет шейдера как такового.
1
21.09.2015, 18:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2015, 18:02
Помогаю со студенческими работами здесь

Java + OpenGL
Как использовать (и можно ли) openGL в Java?

Java GUI и OpenGL
Здравствуйте! Подскажите, пожалуйста! Мне нужно создать программу с использованием OpenGL (для...

Литература по OpenGL на JAVA
Какую посоветуете литературу, чтобы научиться программирjвать графику на Java при помощи OpenGL?

Java OpenGL не работает setCursor( )
Делаю 3d движок на JAVA OpenGL около года. Взялся вчера оформлять меню, попробовал заменить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru