Сделай список, добавить точки и рисовать, используя glDrawArrays - PullRequest
1 голос
/ 08 июля 2010

Это следующий вопрос из Добавить содержимое в конец массива с плавающей точкой, например . Я ищу, чтобы динамически создавать 3D коробки. Вот мои вопросы

  • Я хочу добавить поле в список, например, добавить ....

    // FRONT
             -2.0f, -1.5f,  -6.0f,
              2.0f, -1.5f,  -6.0f,
             -2.0f,  1.5f,  -6.0f,
              2.0f,  1.5f,  -6.0f,
             // BACK
             -2.0f, -1.5f, -10.0f,
             -2.0f,  1.5f, -10.0f,
              2.0f, -1.5f, -10.0f,
              2.0f,  1.5f, -10.0f,
             // LEFT
             -2.0f, -1.5f,  -6.0f,
             -2.0f,  1.5f,  -6.0f,
             -2.0f, -1.5f, -10.0f,
             -2.0f,  1.5f, -10.0f,
             // RIGHT
              2.0f, -1.5f, -10.0f,
              2.0f,  1.5f, -10.0f,
              2.0f, -1.5f,  -6.0f,
              2.0f,  1.5f,  -6.0f,
             // TOP
             -2.0f,  1.5f,  -6.0f,
              2.0f,  1.5f, -6.0f,
             -2.0f,  1.5f, -6.0f,
              2.0f,  1.5f, -10.0f,
             // BOTTOM
             -2.0f, -1.5f,  -6.0f,
             -2.0f, -1.5f, -10.0f,
              2.0f, -1.5f,  -6.0f,
              2.0f, -1.5f, -10.0f,
    

Приведенные выше значения составляют 1 поле, как бы я это сделал?

  • Я хотел бы использовать glDrawArrays(), чтобы затем нарисовать весь список (все поля), как бы я это сделал?

            FloatBuffer makeFloatBuffer(float[] arr) {
    ByteBuffer bb = ByteBuffer.allocateDirect(arr.length*4);
    bb.order(ByteOrder.nativeOrder());
    FloatBuffer fb = bb.asFloatBuffer();
    fb.put(arr);
    fb.position(0);
    return fb;
    

    }

имейте ввиду, я отправляю все через поплавковый буфер. а потом рисует так ..

            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);          
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 4, 4);
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 8, 4);
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,12, 4);
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,16, 4);
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,20, 4);

Я совершенно новичок в Point3D, OpenGL и графике в целом, поэтому любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

2 голосов
/ 08 июля 2010

Теперь, когда вы добавили тег opengl, я понимаю, почему вам нужны структуры float [] (или, по крайней мере, числа с плавающей точкой вместо double).

Вот демо-приложение . Для меня это выглядит как хороший кусок кода для изучения основ opengl, включая массивы вершин. Из другого вопроса я вижу, что вы работаете над проектом Android. Так что я просто надеюсь, что это применимо и к Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...