@implementation VideoView -(void) drawQuad { glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex2f(-1.0f,-1.0f); glTexCoord2f(0.0f, 0.0f); glVertex2f( 1.0f,-1.0f); glTexCoord2f(1.0f, 1.0f); glVertex2f( 1.0f, 1.0f); glTexCoord2f(0.0f, 1.0f); glVertex2f(-1.0f, 1.0f); glEnd(); } -(void) drawRect: (NSRect) bounds { glClearColor(0, 0, 0, 0); glClear(GL_COLOR_BUFFER_BIT); glGenTextures(1, &texture[0]); glBindTexture(GL_TEXTURE_2D, texture[0]); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, 300, 225, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); /* Draw our quad and load a black texture */ [self drawQuad]; } -(void) DrawFrame: (CFrame *)pFrame { U8 *pBuffer; U32 ulBufferSize; pFrame->GetBuffer(&pBuffer, &ulBufferSize); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 300, 225, GL_RGB, GL_UNSIGNED_BYTE, pBuffer); [self drawQuad]; } @end