суббота, 13 ноября 2010 г.

DirectGL progress

Спортировал ещё одну демку, которая показывает принцип фильтрации MIP-уровней видеокартой:


На codesampler.com есть OpenGL аналог этой D3D9-демки. Там mip-уровни загружаются через glTexImage2D(). Мне необходимо было спортировать функцию D3DXLoadSurfaceFromSurface(), которая, как я подозреваю, вызывает внутри ::StretchRect(). Этот API может нести на себе расширение GL_EXT_framebuffer_blit, которое я и использовал при портировании. Но что-то не заладилось у меня на ноутбуке: нулевые MIP-уровни source текстур не хотели блититься в подходящие MIP-уровни dest текстуры. Вернее, blit шёл всегда в нулевой MIP, как будто бы параметер level игнорируется. Я долго провозился с кодом, но так ничего толкового и не придумал. 

Сегодня решил для пробы проверить на стационарном PC с GTX 260 - и всё заработало как надо. Это опять глючит GlukoGL, теперь на ATI :(.

Update

Нашёл причину бага на ATI: нужно включить mipmap фильтрацию для текстуры, если хотим блитить в mip-уровень больше 0. Маразм.

1 комментарий:

  1. Ну, да, конечно, а как же иначе - опять OpenGL во всём виноват.

    ОтветитьУдалить