Google Android - это несложно
http://forum.startandroid.ru/

Урок 169. OpenGL. Шейдеры
http://forum.startandroid.ru/viewtopic.php?f=3&t=6764
Страница 1 из 1

Автор:  damager82 [ 27 окт 2015, 08:00 ]
Заголовок сообщения:  Урок 169. OpenGL. Шейдеры

В этом уроке:

- создаем шейдеры
- рисуем треугольник

Click here to read this article!

Автор:  Draz1w [ 06 ноя 2015, 22:55 ]
Заголовок сообщения:  Re: Урок 169. OpenGL. Шейдеры

Цитата:
Очень много инфы получилось для одного урока, но меньше уже никак было не разбить.

На самом деле можно было проще.
Вот самый простой класс рендера без использования буферов и показывающий основы работы Шейдеров:

Код: [ Загрузить ] [ Скрыть ]
  1. public class GLES20Renderer implements Renderer { 
  2.     private int _pointProgram; 
  3.  
  4.     public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
  5.         GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1); 
  6.     } 
  7.  
  8.     public void onSurfaceChanged(GL10 gl, int width, int height) { 
  9.         GLES20.glViewport(0, 0, width, height); 
  10.  
  11.         int pointVertexShader = loadShader(GLES20.GL_VERTEX_SHADER, _pointVertexShaderCode); 
  12.         int pointFragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, _pointFragmentShaderCode); 
  13.         _pointProgram = GLES20.glCreateProgram(); 
  14.         GLES20.glAttachShader(_pointProgram, pointVertexShader); 
  15.         GLES20.glAttachShader(_pointProgram, pointFragmentShader); 
  16.         GLES20.glLinkProgram(_pointProgram); 
  17.     } 
  18.  
  19.     public void onDrawFrame(GL10 gl) { 
  20.         GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); 
  21.         GLES20.glUseProgram(_pointProgram); 
  22.         GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 1); 
  23.     } 
  24.  
  25.     private int loadShader(int type, String source)  { 
  26.         int shader = GLES20.glCreateShader(type); 
  27.         GLES20.glShaderSource(shader, source); 
  28.         GLES20.glCompileShader(shader); 
  29.         return shader; 
  30.     } 
  31.  
  32.     private final String _pointVertexShaderCode =  
  33.             "void main() {                            \n" 
  34.         +    " gl_PointSize = 15.0;                    \n" 
  35.         +    " gl_Position = vec4(0.0,0.0,0.0,1);    \n" 
  36.         +    "}                                        \n"; 
  37.  
  38.     private final String _pointFragmentShaderCode =  
  39.             "void main() {                            \n" 
  40.         +    " gl_FragColor = vec4(1.0,1.0,1.0,1);    \n" 
  41.         +    "}                                        \n"; 
  42.  


тут все рисуется только в шейдере и позиция и цвет заданы внутри самих шейдеров и поэтому листинг значительно проще для понимания основ, а подключение к шейдерам буферов вершин и цвета я бы советовал сделать уже следующим уроком. Я когда сам начинал , пока на этот пример не наткнулся в книге Mehta Prateek. - Learn OpenGL ES: For Mobile Game and Graphics Development (есть на рутрекере), вообще с трудом понимал что в рендере происходит, а потом последовательно с таких вот азов постепенно усложняя разбирал и пошло.
Там кстати неплохо описано как создавать простые модели в Blender и выгружать их в openGL и простое текстурирование. Я больше нигде не видел нормального описания.

Автор:  danek130995 [ 09 дек 2015, 12:37 ]
Заголовок сообщения:  Re: Урок 169. OpenGL. Шейдеры

Спасибо огромное!! Вы так стараетесь понятно всё изложить, что этому нет цены! Спасибо!

Страница 1 из 1 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/