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

Не получается отрендрить треугольник OpenGL 2.0 - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Недействительные показы AdMob http://www.cyberforum.ru/android-dev/thread685444.html
Всем привет. Я встроил баннер AdMob в приложение и меня не устраивало, что объявления не меняются с момента создания AdView и отправки запроса. Я сделал, чтобы каждую минуту запрос отправлялся повторно. В результате, объявления меняются, количество показов увеличилось в разы. И тут у меня возник вопрос. А не считаются ли такие показы недействительными, и не забанит ли меня рано или поздно...
Android Проверка числа Здравствуйте Прошу помочь мне Не совсем понял как это сделать и есть ли встроенная функция типа isNan Проблема состоит в следующем: у меня из текстового поля программы считывается по идеи число но нужна заглушка , чтобы если пользователь ввел не число то программа выдала ему в это же текстовое поле "Атата" не могли ли вы мне подсказать как это реализовать заранее спасибо http://www.cyberforum.ru/android-dev/thread685389.html
Android Диалоги, нужно уничтожать ?
Намудрил с диалогами нужна помощь: @Override protected Dialog onCreateDialog(int id) { switch (id) { case 0: AlertDialog.Builder builder_0 = new AlertDialog.Builder(this); final String mSelectList_0 = { "11", "22", "33", "44"};
Обрезать спрайт в AndEngine Android
Здравствуйте! Подскажите пожалуйста, как в AndEngine обрезать часть спрайта. Во flash для этого используется ScrollRect, есть ли что-то подобное в AndEngine?
Android Запрет поворота экрана после создания активити http://www.cyberforum.ru/android-dev/thread685084.html
Как сделать сабж? Если в onCreate вызываю : setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); И если текущая ориентация не портрет - происходит повторный вызов onCreate, с другой ориентацией Мне требуется запуск в ориентации behind, и блокировка изменения поворота.
Android Программное добавление View Всем привет! У меня в роли setContentView выступает класс Draw2D, в котором я собираюсь рисовать кое-какую графику. Графика рисуется замечательно, но вот проблема - в нем я не могу программно создавать кнопки. У класса LinearLayout есть метод .addView (child, params). А у класса Draw2D (а он унаследован от View) этот метод отсутствует. Как выходить из данной ситуации? Заранее благодарен! подробнее

Показать сообщение отдельно
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590

Не получается отрендрить треугольник OpenGL 2.0 - Android

31.10.2012, 22:16. Просмотров 615. Ответов 2
Метки (Все метки)

Здравствуйте!

Пытаюсь написать свой 2D-движок (просто спортивный интерес, не нужно мне говорить, что это почти нереально и советовать AndEngine, я просто хочу разобраться как это все работает и сделать хотя бы простенький 2D-рендерщик).
Вот код:
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
package ru.contedevel.quantum;
/**
 * 
 * @author ConteDevel
 * Class QObject (abstract)
 */
public abstract class QObject {
    //Переменная, хранящая тип класса экземпляра
    public int type;
    
    //Типы классов
    public static final int Q_TYPE_SPRITE = 0;
    public static final int Q_TYPE_ANIMATIONSPRITE = 1;
    public static final int Q_TYPE_VERTEX = 2;
    public static final int Q_TYPE_LINE = 3;
    public static final int Q_TYPE_TRIANGLE = 4;
    public static final int Q_TYPE_RECTANGLE =5;
    public static final int Q_TYPE_CIRCLE = 6;
    
    //Функция обновления параметров
    public void update() {
        
    }
    
    //Функция отрисовки
    public void draw() {
        
    }
    
    //Возвращает, был ли выбран объект
    public boolean isSelected() {
        return false;//По умолчанию "ложь"
    }
}
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
package ru.contedevel.quantum;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;
 
import javax.microedition.khronos.opengles.GL10;
 
import android.content.Context;
/**
 * 
 * @author ConteDevel
 * class QRectangle
 */
public class QRectangle extends QObject {
    private FloatBuffer vertexBuffer;
    private ShortBuffer indexBuffer;
    ByteBuffer bb;
    
    protected float vertices[] = {
            -1.0f,  1.0f, 0f,
             1.0f,  1.0f, 0f,
             1.0f, -1.0f, 0f,
    };
    
    public QRectangle() {
        //Буфер вершин
        bb = ByteBuffer.allocateDirect(vertices.length*4);
        bb.order(ByteOrder.nativeOrder());
        vertexBuffer = bb.asFloatBuffer();
        ByteBuffer ibb = ByteBuffer.allocateDirect(3*2);
        ibb.order(ByteOrder.nativeOrder());
        indexBuffer = ibb.asShortBuffer();
        
        for (int i = 0; i < vertices.length; i++) {
            for (int j = 0; j < 3; j++) {
                vertexBuffer.put(vertices[i*3+j]);
            }
        }
        
        short[] indecesArray = {0, 1, 2};
        
        for (int i = 0; i < 3; i++) {
            indexBuffer.put(indecesArray[i]);
        }
        
        vertexBuffer.position(0);
        indexBuffer.position(0);
    }
    
    public void draw (GL10 gl) {
        gl.glColor4f (1.0f, 0, 0, 0.5f);
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
        gl.glDrawElements(GL10.GL_TRIANGLES, 3, GL10.GL_UNSIGNED_SHORT, indexBuffer);
    }
}
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
package ru.contedevel.quantum;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;
 
import javax.microedition.khronos.opengles.GL10;
 
import android.content.Context;
/**
 * 
 * @author ConteDevel
 * class QRectangle
 */
public class QRectangle extends QObject {
    private FloatBuffer vertexBuffer;
    private ShortBuffer indexBuffer;
    ByteBuffer bb;
    
    protected float vertices[] = {
            -1.0f,  1.0f, 0f,
             1.0f,  1.0f, 0f,
             1.0f, -1.0f, 0f,
    };
    
    public QRectangle() {
        //Буфер вершин
        bb = ByteBuffer.allocateDirect(vertices.length*4);
        bb.order(ByteOrder.nativeOrder());
        vertexBuffer = bb.asFloatBuffer();
        ByteBuffer ibb = ByteBuffer.allocateDirect(3*2);
        ibb.order(ByteOrder.nativeOrder());
        indexBuffer = ibb.asShortBuffer();
        
        for (int i = 0; i < vertices.length; i++) {
            for (int j = 0; j < 3; j++) {
                vertexBuffer.put(vertices[i*3+j]);
            }
        }
        
        short[] indecesArray = {0, 1, 2};
        
        for (int i = 0; i < 3; i++) {
            indexBuffer.put(indecesArray[i]);
        }
        
        vertexBuffer.position(0);
        indexBuffer.position(0);
    }
    
    public void draw (GL10 gl) {
        gl.glColor4f (1.0f, 0, 0, 0.5f);
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
        gl.glDrawElements(GL10.GL_TRIANGLES, 3, GL10.GL_UNSIGNED_SHORT, indexBuffer);
    }
}
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.contedevel.quantum;
 
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.view.MotionEvent;
 
public class QGLView extends GLSurfaceView {
    private static final String LOG_TAG = QGLView.class.getSimpleName();
    private QGLRenderer _renderer;
 
    public QGLView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        _renderer = new QGLRenderer();
        setRenderer(_renderer);
        setRenderMode (GLSurfaceView.RENDERMODE_WHEN_DIRTY);
        setRenderMode (GLSurfaceView.RENDERMODE_CONTINUOUSLY);
    }
    
    
    public boolean onTouchEvent(final MotionEvent event) {
        queueEvent(new Runnable () {
 
            public void run() {
                // TODO Auto-generated method stub
                _renderer.setColor(event.getX()/getWidth(), event.getY()/getHeight(), 1.0f);
            }
            
        });
        return true;
    }
 
}
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
package ru.contedevel.sapper;
 
import android.os.Bundle;
import ru.contedevel.quantum.*;
import android.app.Activity;
import android.view.Menu;
 
public class GLActivity extends Activity {
    private static final String LOG_TAG = GLActivity.class.getSimpleName();
    private QGLView _vortexView;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        _vortexView = new QGLView(this);
        setContentView(_vortexView);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_gl, menu);
        return true;
    }
}
В чем ошибка? Я уже два дня пытаюсь понять Просто изменение цвета на нажатие работает, а вот рендер спрайта выдает ошибку...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru