С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
fsdfsgwergwrwh
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 156
1

GlDrawArrays не работает после смены типа данных

20.11.2016, 17:51. Просмотров 310. Ответов 5
Метки нет (Все метки)

здесь рисуется треугольник
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    std::vector<float> myVector;
 
    myVector.push_back(-0.5f);
    myVector.push_back(-0.5f);
    myVector.push_back( 0.0f);
 
    myVector.push_back(0.5f);
    myVector.push_back(-0.5f);
    myVector.push_back( 0.0f);
 
    myVector.push_back(0.0f);
    myVector.push_back(0.5f);
    myVector.push_back( 0.0f);
а здесь переписал немножко по-другому и не рисует тот же треугольник. почему?
C++
1
2
3
4
    std::vector<vec3> myVector;
    myVector.push_back(vec3(-0.5f, -0.5f, 0.0f));
    myVector.push_back(vec3(0.5f, -0.5f, 0.0f ));
    myVector.push_back(vec3(0.0f, 0.5f, 0.0f));
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2016, 17:51
Ответы с готовыми решениями:

GlDrawArrays
Добрый день. Есть процедура GLNewList(1, GL_COMPILE); parmini :=...

GlArrayElement/glDrawArrays
//массив вершин - пятиугольник static float v={ ...

C glBegin на glDrawArrays + текстуры
Пытаюсь перейти на более современные технологии в opengl, за место glBegin...

Переход с glVertex3i на glDrawArrays
В памяти картинка(CImage) размером 512х512. Всё, что мне нужно - построить эту...

Не рисуется линия glDrawArrays(GL_LINES, 0, 2);
На создание: var VBOObj: Gluint; FData: array of TVec3f; Count: integer; ...

5
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
20.11.2016, 18:45 2
fsdfsgwergwrwh, не видно куда все это потом попадает
1
fsdfsgwergwrwh
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 156
20.11.2016, 21:12  [ТС] 3
если 1й выриант использую, то
glDrawArrays(GL_TRIANGLES, 0, myVector.size()/3);
если 2й:
glDrawArrays(GL_TRIANGLES, 0, myVector.size());

Добавлено через 2 часа 23 минуты
разобрался. тема закрыта.
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
20.11.2016, 21:25 4
fsdfsgwergwrwh, будущие поколения будут вам благодарны за пояснения
0
fsdfsgwergwrwh
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 156
20.11.2016, 21:49  [ТС] 5
проблема была в другой строчке
glBufferData(GL_ARRAY_BUFFER, myVector.size() * sizeof(GLfloat), &myVector[0], GL_STATIC_DRAW);
а нужно было:

glBufferData(GL_ARRAY_BUFFER, myVector.size() * sizeof(vec3), &myVector[0], GL_STATIC_DRAW);
1
snake32
1665 / 1117 / 197
Регистрация: 26.02.2009
Сообщений: 4,136
Записей в блоге: 5
21.11.2016, 11:30 6
fsdfsgwergwrwh, в с++ есть возможность задать ф-ию через шаблоны исключая такую ошибку
C++
1
2
3
4
template <class T>
inline void glBufferData(GLenum target, const vector<T>& v, GLenum usage) {
    glBufferData(target, v.size() * sizeof(T), &v[0], usage);
}
Потом Вы можете писать так:
C++
1
glBufferData(GL_ARRAY_BUFFER, myVector, GL_STATIC_DRAW);
Каким бы не был тип эл-та вектора (кроме ссылок и указателей) glBufferData автоматически учтёт новый тип.
1
21.11.2016, 11:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 11:30

Как развернуть отображаемый glDrawArrays объект?
Йо. Есть карта высот. Необходимо преобразовать это все в 3D объект, чтобы было...

После смены типа раздела не загружается система
Доброго времени суток. Проблема в следующем. В системе имеется два диска....

После смены указателя, не работает мышь
не понимаю почему не работает новый указатель, иногда при увеличении размеров...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru