Привет всем. Кто нибудь сталкивался с такой ерундой: к примеру ставим видеорежим 1152*864*32, создаем буфер (экранный, задний или оба - неважно). Ерунда в том, что ddraw для этого видеорежима делает буфер 1280*864*32! Делаем видеорежим 1024*768*32 - буфер нормальный, 1280*960*32 - нормальный....
Это есть где-то в SDK - выбирается любой удобный формат, ширина может быть и больше - связано со структурой видеопамяти. поэтому и существует lPitch в труктуре DDSURFACEDESC(2). часто "ширина" кратна килобайту: 1152*4 не делится нацело на 1024, поэтому dx и "округляет" до 1280. если буфер в системной памяти, то ширина обычно равна той, что при создании. Или я не о том, и 1280 - это ширина возвращаемая IDirectDrawSurface::GetSurfaceDesc в dwWidth ? (у меня не держит 1152*864*32 - проверить не могу )
Вот: http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/ddraw 7/directdraw7/ddover_4oxj.asp А кстати, как ты определял ширину, вычислял делением?
Нет S_T_A_S_, просто визуально. Сделал линию 1153 пиксела - на следующей строке ничего не появилось. Сделал - 1281 пиксела, и один пиксел появился на следующей строке. Но режим был точно 1152*864, ты не думай.
Ну я это и имел ввиду: определить эмпирическим методом адрес пикселя ниже, и поделить на кол-во строк (т.е. 1) я сам когда-то об это споткнулся, когда пытался очищать экран обнуляя X*Y пикселей.