Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 26.10.2016
Сообщений: 75
1

GLSL работа с индексом

11.08.2018, 13:10. Показов 628. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пжста.

вывод из буфера индекса КААК СДЕЛАТЬТ со смещение не с начала массива

выдает ошибку когда пытешся наинать ссылку на индекс не с нуля а со смещения
вот 3 вариантк

1. glDrawElements(GL_TRIANGLES, _renderBatches[i].numVertices * sizeof(GLuint), GL_UNSIGNED_INT, (void*)_indices[sme] );
2. glDrawElements(GL_TRIANGLES, _renderBatches[i].numVertices * sizeof(GLuint), GL_UNSIGNED_INT, 0);
выводит хоть что то но не то что надо так как всегда с 0 индекс
3. glDrawElements(GL_TRIANGLES, _renderBatches[i].numVertices * sizeof(GLuint), GL_UNSIGNED_INT, &_indices[sme]);
зависает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    glBindBuffer(GL_ARRAY_BUFFER, _vbo);                                                         // Свяжите наш VBO
 
    glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(Vertex), nullptr, GL_DYNAMIC_DRAW);   // буфера (для скорости)
 
    glBufferSubData(GL_ARRAY_BUFFER, 0, vertices.size() * sizeof(Vertex), &vertices[0]);         // Загрузка данных
 
    glBindBuffer(GL_ARRAY_BUFFER, 0);                                                            // Отвяжите VBO
 
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _ibo);
 
    // Orphan the buffer
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, _indices.size() * sizeof(GLuint), nullptr, GL_DYNAMIC_DRAW);
 
    // Upload the data
    glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, _indices.size() * sizeof(GLuint), &_indices[0]);
 
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    
GLuint NumEl = _indices.size();
 
    GLuint sme = 0;
    glBindVertexArray(_vao);
 
    glEnableClientState(GL_INDEX_ARRAY);
 
    for (size_t i = 0; i < _renderBatches.size(); i++)
    {
        glBindTexture(GL_TEXTURE_2D, _renderBatches[i].texture);
        glDrawElements(GL_TRIANGLES, _renderBatches[i].numVertices * sizeof(GLuint), GL_UNSIGNED_INT, &_indices[sme]);
        sme += _renderBatches[i].numVertices;
    }
    
    glDisableClientState(GL_INDEX_ARRAY);
 
    glBindVertexArray(0);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2018, 13:10
Ответы с готовыми решениями:

Работа с индексом
мне надо алгоритм в 1с такой чтоб на второй круг проходм с индексом в обратную сторону(то-есть...

DataGrid: удалить строку с индексом 1, если строка с индексом 2 получает фокус
Мне нужно удалить строку с индексом 1 если если строка с индексом 2 получает фокус. делаю так...

Как присвоить значению X:= F с верхним индексом n и нижним индексом 2 (см. вложение)
Как присвоить значению X:= F с верхним индексом n и нижним индексом 2 (см. вложение)

Подсчитать количество отрицательных элементов с четным индексом и сумму положительных с нечетным индексом
полный ноль в VBA, ничего даже в голову не лезет

1
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
11.08.2018, 21:51 2
Цитата Сообщение от gres8 Посмотреть сообщение
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(Vertex), nullptr, GL_DYNAMIC_DRAW);
vertices это vector<Vertex> vertices;?
а Vertex это структура?

если это так то можно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(Vertex), &vertices[0], GL_STATIC_DRAW);
 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned int), &indices[0], GL_STATIC_DRAW);
 
// устанавливаем указатели атрибутов вершин
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)0);
// вершинные нормали
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, Normal));
// вершинные текстурные координаты
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, TexCoords));
1
11.08.2018, 21:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2018, 21:51
Помогаю со студенческими работами здесь

Удалите из списка элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k
С клавиатуры вводится список из 50 элементов, индекс элемента в списке k. Удалите из списка элемент...

Удалить из массива элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k
Дан массив из N элементов и номер элемента в массиве k. Удалите из массива элемент с индексом k,...

Маткад работа с переменной с тройным индексом
Помогите пожалуйста с маткадом. Нужно написать следующее выражение Aijk=(Aij*Ajk*Aik)^1/3 Другими...

GLSL Анимация 3D
Есть модель формата .obj, вроде, даже со скелетом. Есть скаченная с моделью анимация в формате...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru