Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 25 фев 2017, 03:55

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Урок 169. OpenGL. Шейдеры
СообщениеДобавлено: 27 окт 2015, 08:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1319
Благодарил (а): 0 раз.
Поблагодарили: 69 раз.
В этом уроке:

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

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 21 сен 2016, 18:42, всего редактировалось 13 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 169. OpenGL. Шейдеры
СообщениеДобавлено: 06 ноя 2015, 22:55 

Зарегистрирован: 10 окт 2015, 18:07
Сообщений: 20
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Цитата:
Очень много инфы получилось для одного урока, но меньше уже никак было не разбить.

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

Код: [ Загрузить ] [ Скрыть ]
  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 и простое текстурирование. Я больше нигде не видел нормального описания.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 169. OpenGL. Шейдеры
СообщениеДобавлено: 09 дек 2015, 12:37 

Зарегистрирован: 25 янв 2015, 19:57
Сообщений: 34
Благодарил (а): 9 раз.
Поблагодарили: 2 раз.
Спасибо огромное!! Вы так стараетесь понятно всё изложить, что этому нет цены! Спасибо!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 169. OpenGL. Шейдеры
СообщениеДобавлено: 18 фев 2017, 05:18 

Зарегистрирован: 18 фев 2017, 05:02
Сообщений: 2
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
хорошие уроки спасибо вам за труды, с моей первой игры обязательно Баблагадорю Вас.

- подскажите пожалуйста как запустить скачанный у вас проект? использую последнюю версия AS. при запуске выдает ошибку Error:(1, 0) Plugin with id 'com.android.application' not found.
<a href="openFile:E:\Proj\game\Android\lesson175_texture\build.gradle">Open File</a>
читал что надо гдето чтото подключить чтобы проекты открывались но пока разобраться не получается.
Приходится создавать свой проект и перетаскивать текста из вашего.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB