Спасибо Риду Копси за то, что он указал мне на glTexImage2D
. Оказывается, это очень просто; просто передайте массив GLubyte в функцию glTexImage2D
(а также все функции, необходимые для связывания текстуры и т. д.). Не пробовал этот точный фрагмент кода, но он должен работать нормально. Элементы массива представляют собой последовательную версию строк, столбцов и каналов.
int pixelIndex = 0;
GLubyte pixels[400];
for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; x++)
{
for (int channel = 0; channel < 4; channel++)
{
// 0 = black, 255 = white
pixels[pixelIndex++] = 255;
}
}
}
glTexImage2D(
GL_TEXTURE_2D, 0, GL_RGBA, SIZE, SIZE, 0,
GL_RGBA, GL_UNSIGNED_BYTE, pixels);
Я читал в книге OpenGL, что вы можете использовать 2D-массив для монохромных изображений, поэтому я предполагаю, что вы можете использовать 3D-массив.