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