Народный учебник по OpenGL

Минет фото читайте здесь. | Youtube red,tube video. |

Nehe21 - часть 8


int    steps[6]={ 1, 2, 4, 5, 10, 20 }; // Значения шагов для работы

                                        // на медленных видеокартах

Затем мы создаем память для двух текстур. Мы загрузим фон сцены, и картинку для шрифта. Затем мы определяем переменную base, для списка отображения шрифта точно так же как, мы делали в других уроках со шрифтами. Наконец мы объявляем WndProc().

GLuint    texture[2];          // Память для текстур

GLuint    base;                // База для списка отображения шрифта

LRESULT  CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // Объявление для WndProc

Теперь интересный материал :). В следующем разделе кода мы инициализируем наш таймер. Вначале  проверим, доступен ли высокоточный таймер (очень точный таймер). Если нет высокоточного таймера, будем использовать мультимедийный таймер. Этот код должен быть переносим, как следует из того, что я говорил.

Вначале сбросим все переменные структуры таймера в ноль. Это присвоит всем переменным в нашей структуре таймера значение ноль. После этого, мы проверим наличие высокоточного таймера. Здесь знак '!' означает НЕТ. Если таймер есть, то частота будет сохранена в timer.frequency.

Если нет высокоточного таймера, код между скобками будет выполнен. В первой строке переменной performance_timer присваивается ЛОЖЬ. Это говорит нашей программе, что нет никакого высокоточного счетчика. Во второй строке мы получаем стартовое значение для мультимедийного таймера от timeGetTime(). Мы задаем timer.resolution в 0.001f, и timer.frequency к 1000. Поскольку еще не прошло время, мы присваиваем прошедшему времени время запуска.

void TimerInit(void) // Инициализация нашего таймера (Начали)




- Начало -  - Назад -  - Вперед -



Книжный магазин