Visual Basic - мастерская разработчика
Библиотеки

DirectX

Обзоры
DirectDraw
Direct3D
DirectX Audio
DirectPlay
DirectInput
Fido Topics
SourceCode
Tools&Libs

OpenGL

Статьи и учебники
Fido Topics
SourceCode
Tools&Libs

Архив по Glide

Движки

Обзоры
Учебники
SourceCode
Downloads

Создание игр

Ваши игры

Обзорные статьи
Учебники
Fido Topics
SourceCode
Download

Stuff

Программер-Чат

Псевдо-FTP
Disclaimer
Оффтопик

 

Что такое поверхности DirectDraw

"Теория DirectDraw"


Поверхность (буфер) DirectDraw представляет собой линейную область памяти. Поверхность обычно находится в памяти видеокарты, но также поверхность может существовать и в системной памяти. Так как при создании поверхности, мы не говорим DirectDraw, в какую память надо определить нашу поверхность, он сам решает это, исходя из того, где к ней будет доступ лучше всего. Не правда ли очень удобно? Это отстраняет нас от многих проблем. Объект DirectDrawSurface может использовать все преимущества графического процессора видеокарты, не только выполняя быстрее обычные операции, но и работая в параллели с главным CPU.

Вы создаете поверхности с помощью метода IDirectDraw7::CreateSurface (DirectDraw7.CreateSurface) Вы можете создавать, как одиночные поверхности, так и комплексные поверхности, а также поверхности для трехмерного моделирования.

Интерфейс IDirectDrawSurface7 (DirectDrawSurface7) дает вам непрямой доступ к видеопамяти, через методы переноса битов (blitting), например IDirectDrawSurface7::BltFast (DirectDrawSurface7.BltFast) Объект поверхности может давать свой DC, так что вы сможете применять обычные GDI функции. И наконец, вы можете использовать методы для прямого доступа к видеопамяти. Например, вы можете применить метод IDirectDrawSurface7::Lock (DirectDrawSurface7.Lock), чтобы заблокировать видеопамять и получить адрес памяти, соответствующий некой поверхности. Адреса могут указывать на фидимый буфер кадра (главную поверхность) или невидимый буфер (оффскринные или оверлейные поверхности). Невидимые буфера обычно находятся в видеопамяти, но могут быть созданы в системной памяти, если существуют аппаратные ограничения, или если DirectDraw выполняет программную эмуляцию.

Но и это еще не все. IDirectDrawSurface7 (DirectDrawSurface7) дает другие методы, с помощью которых вы можете получать или задавать палитры или работать со специфичными типами поверхностей, вроде flipping-chain или оверлеями (overlays).

На этом рисунке вы видите обычный набор поверхностей, которое создает приложение. Обратите внимание, что поверхности могут быть связаны с палитрами. Если глубина цвета поверхности 8 бит и менее, то значение каждого пиксела указывает не на RGB цвет, а на индекс в некой палитре. По умолчанию, это системная палитра, но вы можете создавать свои палитры.

Posted: 23.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>

 


Проект
Создание Народного Учебника по OpenGL

Участвовать!
Поиск
Найдите статью или файл:


Рассылка
Новости сайта
La Vision в вашем почтовом ящике








Программирование на С++ Delphi и Паскаль
Центр демо-искусства в России