Название: Обновление тестуры OGL
Отправлено: cipher от Май 24, 2007, 13:34
Вопрос такой, вот так инициализирую class AOpenGL : public QGLWidget void AOpenGL::initializeGL() { glClearColor(0, 0, 0, 0); glShadeModel(GL_FLAT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-zoom, zoom, -zoom, zoom, 0.1, 100); glMatrixMode(GL_MODELVIEW);
framePix = new unsigned char[3 * texSize * texSize]; glEnable(GL_TEXTURE_2D); glGenTextures(1, &tex); glBindTexture(GL_TEXTURE_2D, tex); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, texSize, texSize, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, framePix);
delete [] framePix; framePix = 0; startTimer(40); }
Затем при отрисовке обновляю тестуру tex glBindTexture(GL_TEXTURE_2D, tex); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, quick.frameWidth, quick.frameHeight, GL_BGRA_EXT, GL_UNSIGNED_BYTE, quick.frameData);
Было установлено что машина грузится на все 100% при наличии glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
В то время как такой приём на WinAPI прекрасно работает. Почему так?
|