Быстрая очистка заднего буффера
Помогите....я недавно сел разбираться с директом 3д.. а меня инетерсует можно както очистить задний буфер, как DirectDraw - вручную..т.е. получить ссылку где находиться поверхность в памяти и ее допустим обнулить(например ZeroMemory)??????????????????????????????
Следующий фрагмент взят из туториала в SDK
// Clear the back buffer to a blue color
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
Ну а если именно как на память, то скорее всего никак, т.к. Direct3D в отличие от DirectDraw не позволяет (на сколько я знаю) напрямую работать с видеопамятью (т.е. копировать, смотреть). Это более высокоуровневый компонент.
На счет производительности ты зря волнуешься -- в Microsoft не дураки работают и вполне возможно, что "ручная" очистка более медленная из-за необходимости блокировать видеопамять, проецировать в обычную, ну и т.д.
Хм....не знаю..дураки не дураки...но ведь в DirectDraw ,быстрее работает чем простая(стандртная) очистка...а зачем что-то куда-то переводить...моя цель получить доступ к области памяти, занимаемой задним буффером...а там просто не сложными матиматическими формулами считаем сколько эта поверхность занимает в памяти и забиваем все вподряд...
Понимаешь, в тебе стремление все оптимизировать, прям как у ЛаМота (не могу сказать, что он плохо на меня повлиял, просто после него долго переучиваться...) Я хочу сказать, что сотни тысяч треугольников, визуализируемых десятки раз в секунду, едят куда больше ресурсов. Да и вообще, в том то и дело, что если драйвер видеокарточки может справиться с какой-то задачей быстрее, то она ложится на его плечи. Существует множество других проблем, на решение которых ты затратишь куда меньше времени и получишь куда более ощутимый выигрышь.
Я, к примеру достаточно уверен в том, что никакие самые современные SSE/SSE2 расширения процессора не помогут процессору обрабатывать векторы быстрее, чем современная 256-битная видеокарточка... Короче, на современном этапе программы зависят в первую очередь от того, что способна реализовать видеокарточка, а не от того, что кажеться быстрее, если руководствоваться здравым смыслом (хотя это часто и не так)...
Вот тебе еще информация для размышления (взята из книги Гайдукова по OpenGL. Надо сказать превосходная книга): порт AGP8X способен передавать данные с пиковой скоростью лишь в 2.1 Гбайт/c. В тоже время видеокарта NVIDIA GeForce FX 5900 Ultra обладает пропускной способностью 27 Гбайт/с (нехило, да??). В результате, даже несмотря на то, что сжатые текстуры требуют времени на раскодирование, работать с ними все-же быстрее, так как они занимают меньше места в видеопамяти и, соответсенно, быстрее считываются...
В общем, думаю, ты меня понял.