std::vector към GLvoid*?

Опитвам се да следвам този урок на OpenGL, но вместо да зареждам необработено изображение, използвам lodePNG.

Проблемът е, че когато мога да направя функцията glTexImage2D, получавам грешка при последния аргумент, че приема само променлива GLvoid*. LodePNG извежда само std::vector като крайни данни за изображението. Не мога да намеря други ресурси по въпроса.

Как да накарам тази функция да работи? Грешката просто посочва, че не приема този тип данни.


person user82779    schedule 14.07.2014    source източник
comment
Може би (GLvoid*)vector.data()?   -  person Cornstalks    schedule 14.07.2014
comment
Не е точен дубликат, тъй като питате за текстурни данни, но решението е същото като за този въпрос: stackoverflow .com/questions/24048666/opengl-add-vertices.   -  person Reto Koradi    schedule 14.07.2014


Отговори (1)


vector::data() е ваш приятел.

Ще трябва да предадете необработените данни от вектора към функцията glTexImage.

vector<...> image;
glTexImage2d(..., image.data());
person Stian Svedenborg    schedule 14.07.2014
comment
Трябва също така да проверите дали аргументът на шаблона на вектора съответства на това, което изпращате като type-аргумент - person Stian Svedenborg; 14.07.2014
comment
Имайте предвид, че методът data() е добавен само с C++11, така че няма да е наличен в по-стари версии на C++. - person Reto Koradi; 14.07.2014