Это форум молчунов
Ладно, уговорили, оставлю для себя
Сделал ещё пару примеров c gif и OpenGL.
https://yadi.sk/d/PHCWrenFzyj5NOpenGL пока не понятно как работает. Предпологаю что после того как все буферы прочитаны включаются тормоза
.
Ещё не совпадает формат пиксела (пока не знаю как задать) нужно чтиво изучать. Нужен формат RGB32.
Скрин gl делаю так
Add(ChildForm,11060184,427,427)
{
}
BEGIN_SDK
Add(EditMulti,1695709,21,21)
{
WorkCount=1
Width=216
Height=186
link(doWork1,13762685:doLoad,[(63,27)(63,62)])
}
Add(MainForm,4755660,84,133)
{
Left=35
Top=105
Width=879
Height=628
}
Add(Image,13762685,84,56)
{
Width=863
Height=590
Align=5
Color=0
ViewStyle=4
}
END_SDK
Add(InlineCode,6989511,357,427)
{
WorkPoints=#5:doScr|
EventPoints=#5:onScr|
DataPoints=#3:glw|3:glh|6:Bitmap|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|36:uses kol,windows,Share,Debug,OpenGL;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|9: glw,|27: glh,Bitmap: THI_Event;|22: onScr: THI_Event;|47: procedure doScr(var dt: TData; idx: word);|5: end;|0:|14:implementation|0:|54:procedure THiAsmClass.doScr(var dt: TData; idx: word);|4:var |19: bmp: KOL.PBitmap;|17: sw,sh: integer;|5:begin|29: sw := ToIntegerEvent(glw); |28: sh := ToIntegerEvent(glh);|39: bmp := NewDIBBitmap(sw, sh, pf32bit);|2: |39: //glPixelStorei(GL_PACK_ALIGNMENT,4);|40: //glPixelStorei(GL_PACK_ROW_LENGTH,0);|39: //glPixelStorei(GL_PACK_SKIP_ROWS,0);|41: //glPixelStorei(GL_PACK_SKIP_PIXELS,0);|2: |44: //glPixelStorei( GL_PACK_SWAP_BYTES, 1 ); |48: //glPixelStorei( GL_UNPACK_SWAP_BYTES, 1 ); |27: //glReadBuffer(GL_FRONT);|74: glReadPixels(0,0,sw,sh,GL_RGBA,GL_UNSIGNED_BYTE, bmp.Scanline[sh-1]); |26: _hi_onEvent(onScr, bmp);|11: bmp.Free;|4:end;|0:|4:end.|
link(onScr,11060184:doWork1,[])
link(glw,1267152:Var,[])
link(glh,14359778:Var,[])
}
Add(LineBreak,13642248,49,189)
{
Caption="h"
Type=1
Primary=[14359778,315,189]
}
Add(LineBreak,7011873,56,168)
{
Caption="w"
Type=1
Primary=[1267152,301,231]
}
Редактировалось 7 раз(а), последний 2016-12-02 12:51:25