All pastes #568800 Raw Edit

WFL+Hype3+openGL frustrations

public text v1 · immutable
·published 2007-06-15 19:47 UTC
rendered paste body
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 ;