

Модератор: Модераторы
Потому что:Вам же предложили воспользоваться OpenGL. Почему упрямитесь?
6. Да и осталось всего лишь придумать как выводить картинку в свободном вращении/искажении.
но есть мысль выводить карту под наклоном для придания эффекта перспективы
Да это понятно. Я надеюсь добиться эффекта с помощью сетки. Чем дальше, тем чаще будет сетка, как на втором рисунке. Вроде должно получится.эффект перспективы без собственно перспективы не получить. выводить под наконом - получится под наклоном вся вся картинка (т.е. сплюснутая), а не ближние объекты больше, дальние меньше.
ImageLayer.Canvas.Draw(x,y,BmpCache[]);
for i:=0 to 255 do
for j:=0 to 255 do
begin
ImageLayer.canvas.pixels[i+x,j+y]:=BmpCache[].canvas.pixels[i,j];
end;
Mr.Smart писал(а):Потому что:1. Ни разу не работал с OpenGL;
Попробовал, работа с пикселями вроде не тормозная, но вот что бы результат вывести на канаву сначала надо сформировать битмапFedeX писал(а):И для попиксельной обработки производительнее будет если использовать TLazIntfImage - в папке с лазарусом (Examples) есть пример как это использовать, там есть прямой доступ к памяти изображения. В Делфи был аналогично производительный способ доступа к памяти изображения через сканлайны битовой карты, но в Лазарусе отчего-то сделали иначе..
, что происходит достаточно долго.TempIntfImg.CreateBitmaps(ImgHandle,ImgMaskHandle,true);
var
BInfo: tagBITMAPINFO; Error: Identifier not found "tagBITMAPINFO"
begin
// Создание DIB
BInfo.bmiHeader.biSize := sizeof(tagBITMAPINFOHEADER);
BInfo.bmiHeader.biWidth := SX;
BInfo.bmiHeader.biHeight := -SY;
BInfo.bmiHeader.biPlanes := 1;
BInfo.bmiHeader.biBitCount := 32;
BInfo.bmiHeader.biCompression := BI_RGB;
ScrBitmap := TBitmap.Create();
ScrBitmap.Handle := CreateDIBSection(ScrBitmap.Canvas.Handle, BInfo, DIB_RGB_COLORS, Scr, 0, 0);
var
BInfo: TBitMapInfoHeader;
//tagBITMAPINFO;
begin
// Создание DIB
SX := aSX; SY := aSY;
BInfo.Size:=sizeof(BInfo);
BInfo.Width := SX;
BInfo.Height := -SY;
BInfo.Planes := 1;
BInfo.BitCount := 32;
BInfo.Compression := BI_RGB;
ScrBitmap := TBitmap.Create();
ScrBitmap.Handle := CreateDIBSection(ScrBitmap.Canvas.Handle, BInfo, DIB_RGB_COLORS, Scr, 0, 0);
procedure TForm1.CreateBitmap(aSX, aSY: Integer);
var
BInfo: TBitmapInfo;
begin
// Создание DIB
SX := aSX; SY := aSY;
BInfo.bmiHeader.biSize := sizeof(BitmapInfo.bmiHeader);
BInfo.bmiHeader.biWidth := SX;
BInfo.bmiHeader.biHeight := -SY;
BInfo.bmiHeader.biPlanes := 1;
BInfo.bmiHeader.biBitCount := 32;
BInfo.bmiHeader.biCompression := BI_RGB;
ScrBitmap := TBitmap.Create();
ScrBitmap.Handle := CreateDIBSection(ScrBitmap.Canvas.Handle, BInfo, DIB_RGB_COLORS, Scr, 0, 0);
ZeroMemory(Scr, SX * SY * 4);
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2