Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ASDFD12
33 / 33 / 5
Регистрация: 15.09.2012
Сообщений: 424
#1

Знакомство с OPEN GLES - Программирование Android

07.03.2014, 15:12. Просмотров 790. Ответов 3
Метки нет (Все метки)

первая попытка нарисовать треугольник
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 com.example.opengl;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.util.Random;
 
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
 
import android.opengl.GLES10;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager;
 
public class MainActivity extends Activity {
    GLSurfaceView glSurfaceView;
    myRender renderer;
    ByteBuffer bytebuffer;
    FloatBuffer floatbuffer;
    float[] vertices;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); // Убираем заголовок
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);  // Устанавливаем полноэкранный режим
 
        bytebuffer = ByteBuffer.allocateDirect(3*3*4);
        bytebuffer.order(ByteOrder.nativeOrder());
        floatbuffer= bytebuffer.asFloatBuffer();
        vertices = new float[] {0,0,500,0,250,1000};
        floatbuffer.put(vertices);
        floatbuffer.flip();
        
        
        GLES10.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
        GLES10.glMatrixMode(GL10.GL_PROJECTION);
        GLES10.glLoadIdentity();
        GLES10.glOrthof(0, 720, 0, 1280, 1, -1);
        
        GLES10.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        GLES10.glVertexPointer(2, GL10.GL_FLOAT, 0, floatbuffer);
        
        
        try{    // пытаемся инициализировать OpenGL
            glSurfaceView = new GLSurfaceView(this);
 
            // Далее устанавливаем версию OpenGL ES, равную 2
            glSurfaceView.setEGLContextClientVersion(2);
 
            renderer = new myRender();
        
            glSurfaceView.setRenderer(renderer); // устанавливаем нашу реализацию GLSurfaceView.Renderer для обработки событий
 
            glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); // режим смены кадров
            // RENDERMODE_CONTINUOUSLY - автоматическая смена кадров,
            // RENDERMODE_WHEN_DIRTY - по требованию ( glSurfaceView.requestRender(); )
 
            setContentView(glSurfaceView);
 
        }catch(RuntimeException e){} 
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    
    public class myRender implements GLSurfaceView.Renderer {
        
        public void onDrawFrame(GL10 glUnused) { // Отрисовка кадра
 
                
            GLES20.glClear(GL10.GL_COLOR_BUFFER_BIT);
            GLES10.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
            
        }
 
            public void onSurfaceChanged(GL10 glUnused, int width, int height) { // изменение поверхности, например изменение размера
            
                GLES20.glViewport(0, 0, width, height);
            
            // Устанавливаем положение и размер вьюпорта
                
            }
 
            @Override
            public void onSurfaceCreated(GL10 gl, EGLConfig config) {
            
                }
    }
    
     @Override
        protected void onResume()
        {
            super.onResume();
            glSurfaceView.onResume();
        }
        
        @Override
        protected void onPause()
        {
            super.onPause();
            glSurfaceView.onPause();
        }
    
    
}
Что не так?
Где должен находится блок кода
Java
1
2
3
4
5
6
7
GLES10.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
        GLES10.glMatrixMode(GL10.GL_PROJECTION);
        GLES10.glLoadIdentity();
        GLES10.glOrthof(0, 720, 0, 1280, 1, -1);
        
        GLES10.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        GLES10.glVertexPointer(2, GL10.GL_FLOAT, 0, floatbuffer);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2014, 15:12     Знакомство с OPEN GLES
Посмотрите здесь:

GLES 2 ошибка при отрисовке квадрата - Программирование Android
Здравствуйте! Никак не пойму, в чем ошибка... В openGL полный чайник и завис на первых же шагах. package com.*.*.render; *** ...

Could not open database - Программирование Android
Здравствуйте, наполнял бд через SqlDatabaseBrowser, подключал к программе с помощью этой статьи...

Open Project - Программирование Android
Как открыть проект в android studio 2.2.3 и какое рассширение исходного кода у проектов андроид.

Open file dialog - Программирование Android
доброго времени. вопрос простой - как сделать (вызвать, если уже есть такой) диалог выбора и открытия файла. аналог Open File Dialog в .NET.

Open Street Map navigation - Программирование Android
Добрый день. возникла необходимость сделать в приложении прокладку маршрута по oms картам, третий день не могу найти решение. Может...

Создание движущегося объекта (open gl) - Программирование Android
Недавно начал писать живые обои. Нужно создать несколько падающих звезд, каждая из которых рандомно исчезает в точке. Скажите, пожалуйста,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ASDFD12
33 / 33 / 5
Регистрация: 15.09.2012
Сообщений: 424
08.03.2014, 22:13  [ТС]     Знакомство с OPEN GLES #2
...
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
08.03.2014, 22:19     Знакомство с OPEN GLES #3
Цитата Сообщение от ASDFD12 Посмотреть сообщение
Где должен находится блок кода
в методе onDrawFrame.

Добавлено через 36 секунд
В api demos есть пример BasicGLSurfaceView.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2014, 22:46     Знакомство с OPEN GLES
Еще ссылки по теме:

Исходники напоминалки open-source - Программирование Android
Не подскажите, есть ли на просторах инета простой опен-сорс исходник для напоминалки/будильника? Хочу разобраться как связать сервис,...

Unknown error (code 14): Could not open database - Программирование Android
Подскажите пожалуйста. в чем ошибка, видно что не открывается БД, но из-за чего это, и правильно ли прочитал лог? :...

Разница в загрузке Android от Open GL и canvas - Программирование Android
Интересует такой вопрос. Допустим разрешение устройства 320 на 480. Есть фото лабиринта (кирпичная стенка произвольной формы на темном...

Открыть исходики open sourse преоктов в Eclipse - Программирование Android
Добрый день всем! Я столкнулся с такой проблемой, что когда пытаюсь импортировать исходники проекта android приложения ( с того же GitHub...


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

Или воспользуйтесь поиском по форуму:
ASDFD12
33 / 33 / 5
Регистрация: 15.09.2012
Сообщений: 424
08.03.2014, 22:46  [ТС]     Знакомство с OPEN GLES #4
да уж.. вот это особенно понравилось
Java
1
2
3
4
5
6
7
8
9
    private final String mVertexShader =
        "uniform mat4 uMVPMatrix;\n" +
        "attribute vec4 aPosition;\n" +
        "attribute vec2 aTextureCoord;\n" +
        "varying vec2 vTextureCoord;\n" +
        "void main() {\n" +
        "  gl_Position = uMVPMatrix * aPosition;\n" +
        "  vTextureCoord = aTextureCoord;\n" +
        "}\n";
Yandex
Объявления
08.03.2014, 22:46     Знакомство с OPEN GLES
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru