WINAPI: glDrawPixels OpenGL32.DLL \ надо наверно добавить в ~ygrek\lib\data\opengl.f
REQUIRE WFL ~day/wfl/wfl.f
NEEDS ~ygrek/lib/wfl/opengl/GLWindow.f
REQUIRE CBMP24 ~ygrek/lib/spec/bmp.f
: PrepareLight
GL_NORMALIZE glEnable DROP \ Enable normalization of normales
GL_COLOR_MATERIAL glEnable DROP \ The color is treated as the material color
|| CGLPoint p ||
0.2e 0.2e 0.2e 0.5e p :set4
p :getv GL_AMBIENT GL_LIGHT1 glLightfv DROP
\ простой равномерный свет
GL_LIGHT1 glEnable DROP \ Enable our light source
GL_LIGHTING glEnable DROP \ Enable lighting in general
;
CGLWindow SUBCLASS CMyGLWindow
: :prepare SUPER :prepare PrepareLight ;
;CLASS
\ -----------------------------------------------------------------------
0
1 -- r
1 -- g
1 -- b
CONSTANT /rgb
VARIABLE bb
: bmp2rgb ( S" pic.bmp" -- addr )
|| CBMP24 img D: addr ||
img :load-file
img :size * /rgb * ALLOCATE THROW DUP bb !
addr !
img sizeY @ 0 DO
img sizeX @ 0 DO
I J img :rgb ( r g b )
addr @
TUCK b C!
TUCK g C!
TUCK r C!
rgb + addr !
LOOP LOOP ;
CGLObject SUBCLASS CGLImage
: :draw
SUPER :draw
1 GL_UNPACK_ALIGNMENT glPixelStorei DROP
bb @ GL_UNSIGNED_BYTE GL_RGB 100 100 glDrawPixels DROP
;
\ : init:
\ S" r.bmp" :load-image ;
\ dispose: ;
;CLASS
0 VALUE K
0 VALUE list1
0 VALUE bmp
: test ( -- n )
|| CMyGLWindow aa CMessageLoop loop ||
CGLObjectList NewObj TO list1
CGLImage NewObj TO bmp
S" r.bmp" bmp2rgb
CGLCube NewObj
DUP 0.75e :: CGLCube.:resize
list1 :: CGLObjectList.:add
bmp list1 :: CGLObjectList.:add
-15e -15e -40e aa :setShift
list1 aa :add
0 aa create DROP
SW_SHOW aa showWindow
loop run ;
test
\EOF
: save
0 TO SPF-INIT?
['] ANSI>OEM TO ANSI><OEM
TRUE TO ?GUI
['] test TO <MAIN>
['] test MAINX !
S" wflgl.exe" SAVE ;