Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
20 Июль 2025, 08:12:48
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование > Тема: Re: Open GL
(Модераторы: Админ, barmalei) > Тема:

Сообщение #1127889

Страниц  :   Вниз
  Печать  
Автор Тема: Re: Open GL  (Прочитано 3026 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Paladin
FUCK GMmmm
Губернатор
*****

Репутация: +501/-51
Offline Offline

Пол: Мужской
Сообщений: 11862


Просмотр профиля
« Ответ #0 : 04 Декабрь 2007, 10:46:27 »

Кстати раз уж у нас такая тема? Мож кто мне растусует мое где я не прав. Баталии у мну ведуться в Java с GL10. И проблемма в построителе. Когда я засовываю в него триангулированный кубик все отлично рисуется но когда я в него засовываю чтото более объемное (по индексу) то оно отрисовывает только несколько граней о стальные кудата вдрух диюццо. Касательно нормалей или направлений обхода граней в индексе я в курсе.


вот пример "правильного" кода
Код:
class Cube
{
    public Cube()
    {
        int one = 0x10000;
        int vertices[] = {
               -one, -one, -one,
                one, -one, -one,
                one,  one, -one,
               -one,  one, -one,
               -one, -one,  one,
                one, -one,  one,
                one,  one,  one,
               -one,  one,  one,
            };
            
        int colors[] = {
                  0,    0,    0,  one,
                one,    0,    0,  one,
                one,  one,    0,  one,
                  0,  one,    0,  one,
                  0,    0,  one,  one,
                one,    0,  one,  one,
                one,  one,  one,  one,
                  0,  one,  one,  one,
            };

        byte indices[] = {
                0, 4, 5,    0, 5, 1,
                1, 5, 6,    1, 6, 2,
                2, 6, 7,    2, 7, 3,
                3, 7, 4,    3, 4, 0,
                4, 7, 6,    4, 6, 5,
                3, 0, 1,    3, 1, 2
        };

      // Buffers to be passed to gl*Pointer() functions
      // must be direct, i.e., they must be placed on the
      // native heap where the garbage collector cannot
      // move them.
    //
    // Buffers with multi-byte datatypes (e.g., short, int, float)
    // must have their byte order set to native order

    ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length*4);
    vbb.order(ByteOrder.nativeOrder());
    mVertexBuffer = vbb.asIntBuffer();
      mVertexBuffer.put(vertices);
      mVertexBuffer.position(0);

    ByteBuffer cbb = ByteBuffer.allocateDirect(colors.length*4);
    cbb.order(ByteOrder.nativeOrder());
      mColorBuffer = cbb.asIntBuffer();
      mColorBuffer.put(colors);
      mColorBuffer.position(0);

      mIndexBuffer = ByteBuffer.allocateDirect(indices.length);
      mIndexBuffer.put(indices);
      mIndexBuffer.position(0);
    }
    
    public void draw(GL10 gl)
    {
        gl.glFrontFace(gl.GL_CW);
        gl.glVertexPointer(3, gl.GL_FIXED, 0, mVertexBuffer);
        gl.glColorPointer(4, gl.GL_FIXED, 0, mColorBuffer);
        gl.glDrawElements(gl.GL_TRIANGLES, 36, gl.GL_UNSIGNED_BYTE, mIndexBuffer);
    }
    
    private IntBuffer   mVertexBuffer;
    private IntBuffer   mColorBuffer;
    private ByteBuffer  mIndexBuffer;
}

вот проблемма в том что если в массив indices[] положить больше граней то они просто не отрисуюццо. Думаю дело в какихто ограничениях?
« Последнее редактирование: 04 Декабрь 2007, 10:57:03 от Paladin » Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,099 секунд. Запросов: 20.