Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JOGL (OpenGL) Index и Vertex буфферы. Что я сделал не правильно? 
:(
    Опции темы
Norby89
  Дата 6.3.2011, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



Написал вот такой класс:
Код

public class Box implements DrawableObject {

    Point3D p1;
    Point3D p2;
    double[] vertices;
    byte[] indexes = {
        0, 1, 2, 3,
        5, 6, 7, 8,
        1, 2, 6, 5,
        4, 3, 7, 8,
        1, 4, 8, 5,
        2, 3, 7, 6
    };
    DoubleBuffer vertexBuf;
    ByteBuffer indexBuf;

    public Box(Point3D p1, Point3D p2) {
        this.p1 = p1;
        this.p2 = p2;
        vertices = new double[]{
                    p1.x, p1.y, p1.z,
                    p2.x, p1.y, p1.z,
                    p2.x, p1.y, p2.z,
                    p1.x, p1.y, p2.z,
                    p1.x, p2.y, p1.z,
                    p2.x, p2.y, p1.z,
                    p2.x, p2.y, p2.z,
                    p1.x, p2.y, p2.z
        };
        vertexBuf = ByteBuffer.allocateDirect(Double.SIZE / 8 * vertices.length).asDoubleBuffer();
        indexBuf = ByteBuffer.allocateDirect(Byte.SIZE / 8 * indexes.length);
        vertexBuf.put(vertices);
        indexBuf.put(indexes);
        vertexBuf.rewind();
        indexBuf.rewind();
    }

    @Override
    public void draw(GL2 gl) {
        
        gl.glEnableClientState(GL2.GL_INDEX_ARRAY);
        gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
        gl.glVertexPointer(3, GL2.GL_DOUBLE, 0, vertexBuf);
        gl.glIndexPointer(GL2.GL_UNSIGNED_BYTE, 0, indexBuf);

        //Так рисуется
        gl.glBegin(GL2.GL_QUADS);
        //Рисуем одну грань
            gl.glVertex3d(vertices[0], vertices[1], vertices[2]);
            gl.glVertex3d(vertices[3], vertices[4], vertices[5]);
            gl.glVertex3d(vertices[6], vertices[7], vertices[8]);
            gl.glVertex3d(vertices[9], vertices[10], vertices[11]);
        gl.glEnd();

        //Так не работает
        /*gl.glBegin(GL2.GL_QUADS);
            //Рисуем одну грань
            gl.glArrayElement(0);
            gl.glArrayElement(1);
            gl.glArrayElement(2);
            gl.glArrayElement(3);
        gl.glEnd();*/

        //И так тоже
        //gl.glDrawElements(GL2.GL_QUADS, 1, GL2.GL_UNSIGNED_BYTE, indexBuf);

        gl.glDisableClientState(GL2.GL_INDEX_ARRAY);
        gl.glDisableClientState(GL2.GL_VERTEX_ARRAY);
    }
}


Отметил места как не работает. Хотелось бы рисовать glDrawElements(). Но что-то я по неопытности не так сделал. Кубик не рисуется. Подскажите, что я делаю не так?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.