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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 74, средняя оценка - 4.86
Osanve
2 / 2 / 1
Регистрация: 03.08.2008
Сообщений: 12
#1

OpenGL (Android) - Программирование Android

23.04.2011, 20:37. Просмотров 9063. Ответов 2
Метки нет (Все метки)

Гугля данную тематику нашел цикл уроков по работе с OpenGL: http://*******/qHG0i
Начал изучать и пробовать писать что-то свое.
После изучения второго урока решил реализовать вывод на экран невыпуклового шестиугольника. При запуске на эмуляторе выдается ошибка:
The application MyOpenGLTest (process ru.osanve.myopengltest) has stopped unexpectedly. Please try again.
Run.java:
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
package ru.osanve.myopengltest;
 
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
 
public class Run extends Activity
{
    private GLSurfaceView glSurface;
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        glSurface = new GLSurfaceView(this);
        glSurface.setRenderer(new MyOpenGLTest());
        setContentView(glSurface);
    }
    
    @Override
    protected void onResume()
    {
        super.onResume();
        glSurface.onResume();
    }
    
    @Override
    protected void onPause()
    {
        super.onPause();
        glSurface.onPause();
    }
}
MyOpenGLTest.java:
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
package ru.osanve.myopengltest;
 
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
 
import android.opengl.GLU;
import android.opengl.GLSurfaceView.Renderer;
 
public class MyOpenGLTest implements Renderer
{
    private MoveBar moveBar;
    
    public MyOpenGLTest()
    {
        moveBar = new MoveBar();
    }
    
    public void onSurfaceCreated(GL10 gl, EGLConfig config)
    {
        gl.glShadeModel(GL10.GL_SMOOTH);
        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
        gl.glClearDepthf(1.0f);
        gl.glEnable(GL10.GL_DEPTH_TEST);
        gl.glDepthFunc(GL10.GL_LEQUAL);
        
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
    }
    
    public void onDrawFrame(GL10 gl)
    {
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        gl.glLoadIdentity();
        
        gl.glTranslatef(0.0f, -1.0f, 0.0f);
        moveBar.draw(gl);
    }
    
    public void onSurfaceChanged(GL10 gl, int width, int height)
    {
        if(height==0)
        {
            height = 1;
        }
        
        gl.glViewport(0, 0, width, height);
        gl.glMatrixMode(GL10.GL_PROJECTION);
        gl.glLoadIdentity();
        
        GLU.gluPerspective(gl, 45.0f, (float)width/(float)height, 0.1f, 100.0f);
        
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        gl.glLoadIdentity();
    }
}
MoveBar.java:
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
package ru.osanve.myopengltest;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
 
import javax.microedition.khronos.opengles.GL10;
 
public class MoveBar
{
    private FloatBuffer vertexBuffer;
    
    private float vertices[] = {-1.0f, -1.0f, 0.0f,
                                1.0f, -1.0f, 0.0f,
                                1.0f, 1.0f, 0.0f,
                                1.5f, 1.5f, 0.0f,
                                -1.5f, -1.5f, 0.0f,
                                -1.0f, -1.5f, 0.0f};
    
    public MoveBar()
    {
        ByteBuffer byteBuf = ByteBuffer.allocateDirect(vertices.length*4);
        byteBuf.order(ByteOrder.nativeOrder());
        vertexBuffer = byteBuf.asFloatBuffer();
        vertexBuffer.put(vertices);
        vertexBuffer.position(0);
    }
    
    public void draw(GL10 gl)
    {
        gl.glFrontFace(GL10.GL_CW);
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length/3);
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    }
}
Структура проекта повторена как в уроке: http://*******/mr50E

В чем может быть проблема?

Заранее спасибо.

P.S. Т.к. не вдавался в подробности какая версия Java используется на Android - создал тему в общем разделе.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2011, 20:37     OpenGL (Android)
Посмотрите здесь:

Android OpenGL 1.1 - Программирование Android
Пытаюсь вот так нарисовать треугольник,но ничего не получается.В чём дело.смотрел несколько примеров,вроде всё идентично. package...

Android 2.3 поддерживает opengl 2 ? - Программирование Android
зависит ли это от версии андроида?

Ищу уроки по opengl под android - Программирование Android
Здравствуйте! С друзьями хотим написать игру под android, 2d аркаду (с интересным сюжетом на наш взгляд). Сторонний движок решили не...

Как интегрировать AdMob в экран OpenGL ES Android? - Программирование Android
Помогите, пожалуйста. Как сделать показ объявлений AdMob в приложении на OpenGL ES?

OpenGL - Программирование Android
Наверное, наитупейший вопрос, но как работать с картинкой в OpenGL? Как инициализировать? В примере на офсайте и во многих остальных...

OpenGL ES - Программирование Android
Пытаюсь разобраться с 3D-графикой в Android, нашел пару уроков по OpenGL ES, начал экспериментировать. Никак не могу найти методы...

OpenGL ES AndroidNDK - Программирование Android
ок, таки настроил среду разработки и разобрался как компилировать проекты с использованием NDK. Поведайте пожалуйста, где можно найти...

OpenGl ES 2.0 Текстуры - Программирование Android
Всем доброго вечера! Никак не получается по урокам отрисовать текстурированный прямоугольник. Вылетает и ошибки не выдает, там много...

Кривые в OpenGL SE 1.0 - Программирование Android
Помогите, пожалуйста, мне очень нужна ваша помощь. Как в Android с помощью OpenGL ES 1.0 сделать движение картинки по траектории,...

Текстура OpenGL es 2 - Программирование Android
Доброго времени суток. Возникла такая проблема. Пишу 3D гоночки(eclipse+android sdk+openGL es 2) , тестирую на LG G-pad , samsung...

Инициализация OpenGL ES - Программирование Android
Вечер добрый, товарищи. Пытаюсь инициализировать область GLSurfaceView в части экрана. Как-то не очень выходит. Подскажите? Код: ...

Комбинирование 2D и 3D в OpenGL ES 2.0 - Программирование Android
Написал 3D-приложение на OpenGL ES 2.0 и столкнулся с проблемой: как поверх 3D сцены нарисовать 2D-объект? Подскажите, плз, уже поинета...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Osanve
2 / 2 / 1
Регистрация: 03.08.2008
Сообщений: 12
25.04.2011, 17:08  [ТС]     OpenGL (Android) #2
Всё. Проблема решена.
[SARCASM mode="on"]Спасибо за помощь [SARCASM mode="off"]
zonex5
15 / 15 / 1
Регистрация: 23.08.2009
Сообщений: 51
13.06.2011, 20:48     OpenGL (Android) #3
Лучше для таких целей использовать готовые фрэймворки и движки, как например libgdx (http://code.google.com/p/libgdx/)
Yandex
Объявления
13.06.2011, 20:48     OpenGL (Android)
Ответ Создать тему
Опции темы

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