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

GLES 2 ошибка при отрисовке квадрата - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибки при создании проекта в Eclipse http://www.cyberforum.ru/android-dev/thread1298178.html
Доброго времени суток. Решил попытаться освоить программирование на андроид. Поставил Eclipse, Android SDK. Загрузил компоненты для SDK. Создал проект по инструкции и сразу же выскочила куча ошибок: -error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.ActionButton'. styles_base.xml /appcompat_v7/res/values-v21 -The container...
Программирование Android Авторизация по нажатию кнопки Привет всем! В Android Studio создаю приложение с Login Activity. Там есть кнопка для отправки введенных емейл и пароль. хочу реализовать действие по ее нажатию. И пришел к такой логике: Нажимаешь на кнопку - идет проверка подключения к сети(если подключение отсутствует - выдает ошибку) - создает в бекграунд поток для подключения к серверу - берет строковые значения введенные... http://www.cyberforum.ru/android-dev/thread1297925.html
Программирование Android Не передаются данные между активити
Всем привет , возникла такая проблема при передачи данных от одной активити к другой, есть список (FragmentList) при нажатии на каждый из пунктов открывается активити с фрагментом, в котром на EditText выводится заголовок пункта списка, так вот проблема в том, что при вызове интента и передачи ему ключ/значения @Override public void onListItemClick(ListView l, View v, int position, long id) {...
Программирование Android Как в Android Studio создавать установочные apk файлы для наших гуглофонов?
Как в Android Studio создавать установочные apk файлы для наших гуглофонов? В Eclipse это проект->Android Tools->Export Signed Application Package или Export Unsigned Application Package
Программирование Android Правильно составить запрос, содержащий "'" http://www.cyberforum.ru/android-dev/thread1297107.html
Или такая запись/чтение в БД невозможна? android.database.sqlite.SQLiteException: near "Этуаль": syntax error (code 1): , while compiling: SELECT _id FROM providers WHERE name='Л'Этуаль'
Программирование Android ActionBar, всегда показывать троеточие Не могу понять, в 4.1.1 есть троеточие, а в 4.3 нету. Как принудительно сделать чтоб оно всегда было? подробнее

Показать сообщение отдельно
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 464
13.11.2014, 18:30     GLES 2 ошибка при отрисовке квадрата
Из книги OpenGL® ES 2.0 Programming Guide:
Кликните здесь для просмотра всего текста
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
//
// Book:      OpenGL(R) ES 2.0 Programming Guide
// Authors:   Aaftab Munshi, Dan Ginsburg, Dave Shreiner
// ISBN-10:   0321502795
// ISBN-13:   9780321502797
// Publisher: Addison-Wesley Professional
// URLs:      [url]http://safari.informit.com/9780321563835[/url]
//            [url]http://www.opengles-book.com[/url]
//
 
// Hello_Triangle
//
//    This is a simple example that draws a single triangle with
//    a minimal vertex/fragment shader.  The purpose of this 
//    example is to demonstrate the basic concepts of 
//    OpenGL ES 2.0 rendering.
 
package com.opengles.hellotriangle;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
 
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
 
import android.content.Context;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.util.Log;
 
public class HelloTriangleRenderer implements GLSurfaceView.Renderer
{
 
    ///
    // Constructor
    //
    public HelloTriangleRenderer(Context context)
    {
        mVertices = ByteBuffer.allocateDirect(mVerticesData.length * 4)
                .order(ByteOrder.nativeOrder()).asFloatBuffer();
        mVertices.put(mVerticesData).position(0);
    }
 
    ///
    // Create a shader object, load the shader source, and
    // compile the shader.
    //
    private int LoadShader(int type, String shaderSrc)
    {
        int shader;
        int[] compiled = new int[1];
 
        // Create the shader object
        shader = GLES20.glCreateShader(type);
 
        if (shader == 0)
            return 0;
 
        // Load the shader source
        GLES20.glShaderSource(shader, shaderSrc);
 
        // Compile the shader
        GLES20.glCompileShader(shader);
 
        // Check the compile status
        GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
 
        if (compiled[0] == 0)
        {
            Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
            GLES20.glDeleteShader(shader);
            return 0;
        }
        return shader;
    }
 
    ///
    // Initialize the shader and program object
    //
    public void onSurfaceCreated(GL10 glUnused, EGLConfig config)
    {
        String vShaderStr = 
                  "attribute vec4 vPosition;    \n"
                + "void main()                  \n"
                + "{                            \n"
                + "   gl_Position = vPosition;  \n"
                + "}                            \n";
 
        String fShaderStr = 
                  "precision mediump float;                   \n"
                + "void main()                                  \n"
                + "{                                            \n"
                + "  gl_FragColor = vec4 ( 1.0, 0.0, 0.0, 1.0 );\n"
                + "}                                            \n";
 
        int vertexShader;
        int fragmentShader;
        int programObject;
        int[] linked = new int[1];
 
        // Load the vertex/fragment shaders
        vertexShader = LoadShader(GLES20.GL_VERTEX_SHADER, vShaderStr);
        fragmentShader = LoadShader(GLES20.GL_FRAGMENT_SHADER, fShaderStr);
 
        // Create the program object
        programObject = GLES20.glCreateProgram();
 
        if (programObject == 0)
            return;
 
        GLES20.glAttachShader(programObject, vertexShader);
        GLES20.glAttachShader(programObject, fragmentShader);
 
        // Bind vPosition to attribute 0
        GLES20.glBindAttribLocation(programObject, 0, "vPosition");
 
        // Link the program
        GLES20.glLinkProgram(programObject);
 
        // Check the link status
        GLES20.glGetProgramiv(programObject, GLES20.GL_LINK_STATUS, linked, 0);
 
        if (linked[0] == 0)
        {
            Log.e(TAG, "Error linking program:");
            Log.e(TAG, GLES20.glGetProgramInfoLog(programObject));
            GLES20.glDeleteProgram(programObject);
            return;
        }
 
        // Store the program object
        mProgramObject = programObject;
 
        GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    }
 
    // /
    // Draw a triangle using the shader pair created in onSurfaceCreated()
    //
    public void onDrawFrame(GL10 glUnused)
    {
        // Set the viewport
        GLES20.glViewport(0, 0, mWidth, mHeight);
 
        // Clear the color buffer
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
 
        // Use the program object
        GLES20.glUseProgram(mProgramObject);
 
        // Load the vertex data
        GLES20.glVertexAttribPointer(0, 3, GLES20.GL_FLOAT, false, 0, mVertices);
        GLES20.glEnableVertexAttribArray(0);
 
        GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
    }
 
    // /
    // Handle surface changes
    //
    public void onSurfaceChanged(GL10 glUnused, int width, int height)
    {
        mWidth = width;
        mHeight = height;
    }
 
    // Member variables
    private int mProgramObject;
    private int mWidth;
    private int mHeight;
    private FloatBuffer mVertices;
    private static String TAG = "HelloTriangleRenderer";
 
    private final float[] mVerticesData =
    { 0.0f, 0.5f, 0.0f, -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f };
 
}

Кликните здесь для просмотра всего текста
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
package com.opengles.hellotriangle;
 
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ConfigurationInfo;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.util.Log;
 
/**
 * Activity class for example program that detects OpenGL ES 2.0.
 **/
public class HelloTriangle extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        mGLSurfaceView = new GLSurfaceView(this);
        if (detectOpenGLES20()) 
        {
            // Tell the surface view we want to create an OpenGL ES 2.0-compatible
            // context, and set an OpenGL ES 2.0-compatible renderer.
            mGLSurfaceView.setEGLContextClientVersion(2);
            mGLSurfaceView.setRenderer(new HelloTriangleRenderer(this));
        } 
        else
        {
            Log.e("HelloTriangle", "OpenGL ES 2.0 not supported on device.  Exiting...");
            finish();
           
        }
        setContentView(mGLSurfaceView);
    }
 
    private boolean detectOpenGLES20() 
    {
        ActivityManager am =
            (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        ConfigurationInfo info = am.getDeviceConfigurationInfo();
        return (info.reqGlEsVersion >= 0x20000);
    }
 
    @Override
    protected void onResume() 
    {
        // Ideally a game should implement onResume() and onPause()
        // to take appropriate action when the activity looses focus
        super.onResume();
        mGLSurfaceView.onResume();
    }
 
    @Override
    protected void onPause() 
    {
        // Ideally a game should implement onResume() and onPause()
        // to take appropriate action when the activity looses focus
        super.onPause();
        mGLSurfaceView.onPause();
    }
 
    private GLSurfaceView mGLSurfaceView;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru