OpenGL рендеринг ES для текстурирования

POSIX printf() поддерживает позиционные аргументы.

printf("Hi %1$s, you are %2$s.", name, status);
printf("Vous êtes %2$s, bonjour %1$s !", name, status);
33
задан Andrew Garrison 21 June 2009 в 19:37
поделиться

1 ответ

Вот как я это делаю.

Я определяю переменную текстуры (я использую класс Apple Texture2D , но вы можете использовать идентификатор текстуры OpenGL, если вы хочу) и буфер кадра:

Texture2d * texture;
GLuint textureFrameBuffer;

Затем в какой-то момент я создаю текстуру, буфер кадра и присоединяю буфер рендеринга. Это вам нужно сделать только один раз:

texture = [[Texture2D alloc] initWithData:0 
                             pixelFormat:kTexture2DPixelFormat_RGB888
                             pixelsWide:32
                             pixelsHigh:32
                             contentSize:CGSizeMake(width, height)];

// create framebuffer
glGenFramebuffersOES(1, &textureFrameBuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, textureFrameBuffer);

// attach renderbuffer
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, texture.name, 0);

// unbind frame buffer
glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);

Каждый раз, когда я хочу выполнить рендеринг текстуры, я делаю:

glBindFramebufferOES(GL_FRAMEBUFFER_OES, textureFrameBuffer);

...
// GL commands
...

glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);

Что касается вашего вопроса 3, вот и все, вы можете использовать текстуру, как любую другую текстуру.

43
ответ дан 27 November 2019 в 18:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: