2014-02-13 8 views
1

Я начал изучать OpenGL ES 2.0 для Android. Насколько я понимаю, я могу отображать только те значения, чьи координаты x и y нормализованы между -1 и 1. Но вдруг мой код ведет себя по-разному и отображает значения в диапазоне от -4 до 4. Является ли мое понимание правильным или вы что-то не так с моим кодом?Очки рендеринга в OpenGL ES 2.0

MatrixHelper класс для перспективной матрицы:

public class MatrixHelper { 
    public static void perspectiveM(float[] m, float yFovInDegrees, float aspect, 
     float n, float f) { 
     final float angleInRadians = (float) (yFovInDegrees * Math.PI/180.0); 

     final float a = (float) (1.0/Math.tan(angleInRadians/2.0)); 
     m[0] = a/aspect; 
     m[1] = 0f; 
     m[2] = 0f; 
     m[3] = 0f; 

     m[4] = 0f; 
     m[5] = a; 
     m[6] = 0f; 
     m[7] = 0f; 

     m[8] = 0f; 
     m[9] = 0f; 
     m[10] = -((f + n)/(f - n)); 
     m[11] = -1f; 

     m[12] = 0f; 
     m[13] = 0f; 
     m[14] = -((2f * f * n)/(f - n)); 
     m[15] = 0f;   
    } 
} 

Вот мой класс, чтобы нарисовать линию:

public class Well { 
    private static final int POSITION_COMPONENT_COUNT = 2; 
    private static final int COLOR_COMPONENT_COUNT = 3; 
    private static final int STRIDE = 
      (POSITION_COMPONENT_COUNT + COLOR_COMPONENT_COUNT) * BYTES_PER_FLOAT; 
    private static final float[] VERTEX_DATA = { 

     2.57088082911189f,2.70649737162497f, 1f, 0f, 0f, 
     2.57088082911189f,2.70649737162497f, 1f, 0f, 0f,    
    }; 
    private final VertexArray vertexArray; 

    public Well() { 
     vertexArray = new VertexArray(VERTEX_DATA); 
    } 

    public void bindData(ColorShaderProgram colorProgram) { 
     vertexArray.setVertexAttribPointer(0, colorProgram.getPositionAttributeLocation(), POSITION_COMPONENT_COUNT, STRIDE); 

     vertexArray.setVertexAttribPointer(POSITION_COMPONENT_COUNT, colorProgram.getColorAttributeLocation(), COLOR_COMPONENT_COUNT, STRIDE); 
    } 

    public void draw() { 
     glDrawArrays(GL_LINE_STRIP, 0, 2); 
    } 
} 
+0

Видовое окно по умолчанию охватывает диапазон координат от -1 до +1 для обеих осей. Это не обязательно, но вам нужно определить матрицу проекции и, возможно, матрицу преобразования камеры, чтобы правильно отобразить ваши визуализированные объекты в геометрии вашего экрана: http://developer.android.com/guide/topics /graphics/opengl.html Просьба уточнить вашу конкретную проблему и показать ваш соответствующий код. – NigelK

ответ