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

Простая игра. OpenGL - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Форма объединяющего текста http://www.cyberforum.ru/android-dev/thread1092764.html
ребят привет, подскажите какую форму использовать что бы с разных edittext объединял в одну форму. то есть если в двух edittext я например напишу "А" и "2" то на выводе у меня получалось "А 2"
Программирование Android Какую 2D игру или приложение мне написать под Android? Нужна идея которая ещё не реализована. Заранее благодарен Сложность приложения не волнует. http://www.cyberforum.ru/android-dev/thread1092695.html
Программирование Android Preference headers legacy
Здравствуйте! Пожалуйста, объясните, что я не так делаю? Три часа уже сижу над этими настройками, вроде все делаю, как на developer.android.com... Сделал вот такой preference_headers_legacy.xml: <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <Preference android:title="@string/header_title_schedule" ...
Программирование Android Создание контекстного меню в списках
Не понимаю как прикрепить контекстное меню к с писку. Что бы при нажатии на элемент вызывалось это меню и можно было проводить с этим элементом различные операции например удаление или переименование пункта списка.
Программирование Android Как узнать разрешение экрана http://www.cyberforum.ru/android-dev/thread1092585.html
Пробовал Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); пишет что надо добавить @SupressWarhing, a getWight и getHeight перечеркивает
Программирование Android Заголовки в navigation drawer Как сделать такие заголовки в navigation drawer? подробнее

Показать сообщение отдельно
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
09.02.2014, 23:03     Простая игра. OpenGL
Что ОБЫЧНО используют для подобных игр? Canvas? OpenGL? Движки?
1- двиг или OpenGL
2/3 можно и на канве сделать

1) Кто нибудь вообще использует чистый OpenGL на яве андроида?
хз, вроде как для андроида используется OpenGL ES 1.0/2.0

2/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
package com.example.opengltest;
 
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
 
public class MainActivity extends Activity {
 
    private GLSurfaceView glView;
    private GL_Renderer renderer;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        
        renderer = new GL_Renderer(this);
        glView = new GLSurfaceView(this);
        glView.setRenderer(renderer);
        glView.requestFocus();
        
        setContentView(glView);
    }
 
}
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
package com.example.opengltest;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
 
import android.content.Context;
import android.opengl.GLSurfaceView.Renderer;
 
public class GL_Renderer implements Renderer {
    
    private Context context;
    private int zoomX = 800;
    private int zoomY = 480;
    Polygon polygon;
    
    
    public GL_Renderer(Context context){
        this.context = context;
    }
    
    @Override
    public void onDrawFrame(GL10 gl) {
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        
        GL_Prepare(gl);
        //Draw Game
 
        polygon.draw(gl, 120, 120, 150, 150);
     
        //End
        GL_Finish(gl);
    }
    
    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
        gl.glMatrixMode(GL10.GL_PROJECTION);
        gl.glLoadIdentity();
        
        gl.glOrthof(0, zoomX, zoomY, 0, 0, 1);
        gl.glViewport(0, 0, width, height);
        
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        
    }
 
    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        polygon = new Polygon(gl, context, R.drawable.ic_launcher);
       gl.glEnable(GL10.GL_TEXTURE_2D);
       gl.glShadeModel(GL10.GL_SMOOTH);
       gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
       gl.glClearDepthf(1.0f);
       gl.glEnable(GL10.GL_DEPTH_TEST);
       gl.glDepthFunc(GL10.GL_LEQUAL);
    }
    
    private void GL_Prepare(GL10 gl){
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
        gl.glFrontFace(GL10.GL_CW);
        gl.glEnable(GL10.GL_DEPTH_TEST);
        gl.glEnable(GL10.GL_BLEND);
        gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
    }
    
    private void GL_Finish(GL10 gl){
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    }
 
}
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
package com.example.opengltest;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
 
import javax.microedition.khronos.opengles.GL10;
 
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.GLUtils;
 
public class Polygon {
    private float[] uv1 = new float[2];
    private float[] uv0 = new float[2];
    private FloatBuffer vertexBuffer;
    
    private float vertices[]={
            0.0f, 1.0f, 0.0f, // bottom left
            0.0f, 0.0f, 0.0f, //top left
            1.0f, 0.0f, 0.0f, //top right
            1.0f, 1.0f, 0.0f //bottom right
    };
    private FloatBuffer uvCoordBuffer;
    private float[] uvCoord = {
            uv1[0], uv0[1],
            uv1[0], uv0[0],
            uv1[1], uv0[0],
            uv1[1], uv0[1]
    };
    
    private int[] textures = new int[1];
    private void init(){
        uvCoord[0] = 0.0f; uvCoord[1] = 1.0f;
        uvCoord[2] = 0.0f; uvCoord[3] = 0.0f;
        uvCoord[4] = 1.0f; uvCoord[5] = 0.0f;
        uvCoord[6] = 1.0f; uvCoord[7] = 1.0f;
        
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * 4);
        byteBuffer.order(ByteOrder.nativeOrder());
 
        vertexBuffer = byteBuffer.asFloatBuffer();
        vertexBuffer.put(vertices);
        vertexBuffer.position(0);
 
        byteBuffer = ByteBuffer.allocateDirect(uvCoord.length * 4);
        byteBuffer.order(ByteOrder.nativeOrder());
        uvCoordBuffer = byteBuffer.asFloatBuffer();
        uvCoordBuffer.put(uvCoord);
        uvCoordBuffer.position(0);
    }
    
    public Polygon(GL10 gl, Context c, int id) {
        init();
        LoadFromAsset(gl, c, id);
    }
 
    public void LoadFromAsset(GL10 gl, Context context, int id) {
        Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), id);
        gl.glGenTextures(1, textures,0);
        gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
        
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
    
        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
        bitmap.recycle();
    }
    
  
    
    private void draw(GL10 gl){
        
        gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
        gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, uvCoordBuffer.position(0));
        gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, vertices.length / 3);
    }
    
    public void draw(GL10 gl, int posX, int posY, int width, int height){
        gl.glLoadIdentity();
        gl.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
        gl.glTranslatef(posX, posY, 0);
        gl.glScalef(width, height, 0);
        gl.glRotatef(0, 0, 0, 1.0f);
        draw(gl);
    }
    
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru