Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2020, 09:17   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию Java OpenGL GL_T2F_C4UB_V3F

Использую такой код для отрисовки квадов с текстурой:
Код:
    public void addTextureColorVertexQuad(float u, float v, float x, float y, float z) {
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = u;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = v;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = currentColorRed;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = currentColorGreen;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = currentColorBlue;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = currentColorAlpha;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = 1.0f;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = 1.0f;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = 1.0f;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = x;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = y;
        arrayTextureColorVertexQuads[vertexTextureColorQuadsPos++] = z;
        vertexTextureColorQuadsCount++;
        if (vertexTextureColorQuadsCount % 4 == 0 && vertexTextureColorQuadsPos >= MAX_FLOATS - 48) {
            flushTextureColorQuads();
        }
    }

    public void flushTextureColorQuads() {
        if (vertexTextureColorQuadsCount > 0) {
            bufferArrayTextureColorVertexQuad.put(arrayTextureColorVertexQuads, 0, vertexTextureColorQuadsPos);
            bufferArrayTextureColorVertexQuad.flip();
            
            glInterleavedArrays(GL_T2F_C4F_N3F_V3F, 0, bufferArrayTextureColorVertexQuad);

            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
            glEnableClientState(GL_COLOR_ARRAY);
            glEnableClientState(GL_VERTEX_ARRAY);

            glDrawArrays(GL_QUADS, 0, vertexTextureColorQuadsCount);

            glDisableClientState(GL_VERTEX_ARRAY);
            glDisableClientState(GL_COLOR_ARRAY);
            glDisableClientState(GL_TEXTURE_COORD_ARRAY);

            clearTextureColorQuads();
        }
    }

    public void clearTextureColorQuads() {
        vertexTextureColorQuadsCount = vertexTextureColorQuadsPos = 0;
        bufferArrayTextureColorVertexQuad.clear();
    }
Как вы могли понять из кода, я использую формат массива GL_T2F_C4F_N3F_V3F. То есть, нужен цвет с альфой. По-этому, в страйд приходится добавлять еще и нормаль. Но мне она нафиг не нужна. Мне нужен формат GL_T2F_C4F_V3F, но такого почему-то нет. Есть только GL_T2F_C4UB_V3F. Но я не пойму, как в таком случае должен выглядеть страйд?
У нас же массив из float. Как в него запихнуть UB?
BLACK_RAIN вне форума Ответить с цитированием
Старый 11.08.2020, 13:35   #2
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Сейчас заметил, что при использовании GL_T2F_C4F_N3F_V3F программа выдаёт на 50-60 fps меньше, чем при использовании GL_T2F_V3F. Откуда такая катастрофическая потеря кадров?
Я не использую освещение, а значит нормали в страйдах мне не нужны. Они просто висят мёртвым грузом. Что делать?
BLACK_RAIN вне форума Ответить с цитированием
Старый 21.09.2020, 08:26   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
У нас же массив из float. Как в него запихнуть UB?
Никто не осмелится объяснить?
BLACK_RAIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение и работа с OpenGL в Java artiom4356 Общие вопросы по Java, Java SE, Kotlin 1 23.07.2014 14:20
Нужна программа на java + openGL Korvin123 Фриланс 1 20.04.2010 22:09
Компьютерная графика java + OpenGL Korvin123 Помощь студентам 1 19.04.2010 18:24
Java and OpenGL Mitron Общие вопросы по Java, Java SE, Kotlin 2 30.09.2008 10:35