Re: [Factor-talk] OpenGL gadget question
Also, the opengl matrix stacks were part of the "fixed function pipeline". It was totally removed in openGL 4 and replaced by the programmable shaders. You can read about it on Joe's blog: http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html Jon On Sun, Apr 24, 2016 at 8:45 PM, Jon Harperwrote: > Hi, > do-matrix is a very thin wrapper around glPushMatrix and glPopMatrix > (https://www.opengl.org/sdk/docs/man2/xhtml/glPushMatrix.xml), so for > a theoretical explanation, I suggest you read about linear algebra > (how a matrix can represent a linear transformation such as a > translation, a rotation, a projection, etc) and the openGL matrix > stacks used in the rendering pipeline (how opengl transforms your > coordinates). But to explain everything, you will need more than a few > words... > > From a more practical point of view, the do-matrix call in tetris > means that the effects of the call to "glScalef" (in "scale-board") > end after do-matrix returns. Note that since factor also uses > do-matrix to call the draw-gadget* word, it would have ended after > draw-gadget* returned anyway. > > Also, if you don't use openGL functions that modify the current matrix > (see > http://docs.factorcode.org/content/article-opengl-modeling-transformations.html), > the do-matrix word doesn't do anything for you. > > Hope that helps, > Jon > > Jon > > > On Sun, Apr 24, 2016 at 7:22 PM, Alexander Ilin wrote: >> Thanks fore the reply! >> >> Could someone explain to me in a few words what is do-matrix used for? >> I'm not sure I need it, I just copied the code from the tetris example. >> >> 24.04.2016, 19:51, "John Benediktsson" : >>> You can log to the terminal/console standard output using: >>> >>> [ "foo" . ] with-global >>> >>> The problem with your listener output issue is probably pref-dim is called >>> before the new window opens and draw-gadget is called after and the >>> output-stream (initially set to the listener) is rebound to something other >>> than the listener you expect it to be. >>> >>> You could also save the listener output stream somewhere: >>> >>> SYMBOL: my-output-stream >>> >>> output-stream get my-output-stream set-global >>> >>> Then use it to make sure output goes to the right place: >>> >>> my-output-stream [ "foo" . ] with-output-stream >>> >>> There are other ways maybe to make that cleaner but if you only need debug >>> output that should fix it for you. >>> M: iqlink-gadget draw-gadget* drop [ origin get { 5 5 } gl-fill-rect ] do-matrix "draw-gadget*" . gl-error ; >> >> ---=--- >> Александр >> >> -- >> Find and fix application performance issues faster with Applications Manager >> Applications Manager provides deep performance insights into multiple tiers >> of >> your business applications. It resolves application problems quickly and >> reduces your MTTR. Get your free trial! >> https://ad.doubleclick.net/ddm/clk/302982198;130105516;z >> ___ >> Factor-talk mailing list >> Factor-talk@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/factor-talk -- Find and fix application performance issues faster with Applications Manager Applications Manager provides deep performance insights into multiple tiers of your business applications. It resolves application problems quickly and reduces your MTTR. Get your free trial! https://ad.doubleclick.net/ddm/clk/302982198;130105516;z ___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
Re: [Factor-talk] OpenGL gadget question
Hi, do-matrix is a very thin wrapper around glPushMatrix and glPopMatrix (https://www.opengl.org/sdk/docs/man2/xhtml/glPushMatrix.xml), so for a theoretical explanation, I suggest you read about linear algebra (how a matrix can represent a linear transformation such as a translation, a rotation, a projection, etc) and the openGL matrix stacks used in the rendering pipeline (how opengl transforms your coordinates). But to explain everything, you will need more than a few words... From a more practical point of view, the do-matrix call in tetris means that the effects of the call to "glScalef" (in "scale-board") end after do-matrix returns. Note that since factor also uses do-matrix to call the draw-gadget* word, it would have ended after draw-gadget* returned anyway. Also, if you don't use openGL functions that modify the current matrix (see http://docs.factorcode.org/content/article-opengl-modeling-transformations.html), the do-matrix word doesn't do anything for you. Hope that helps, Jon Jon On Sun, Apr 24, 2016 at 7:22 PM, Alexander Ilinwrote: > Thanks fore the reply! > > Could someone explain to me in a few words what is do-matrix used for? > I'm not sure I need it, I just copied the code from the tetris example. > > 24.04.2016, 19:51, "John Benediktsson" : >> You can log to the terminal/console standard output using: >> >> [ "foo" . ] with-global >> >> The problem with your listener output issue is probably pref-dim is called >> before the new window opens and draw-gadget is called after and the >> output-stream (initially set to the listener) is rebound to something other >> than the listener you expect it to be. >> >> You could also save the listener output stream somewhere: >> >> SYMBOL: my-output-stream >> >> output-stream get my-output-stream set-global >> >> Then use it to make sure output goes to the right place: >> >> my-output-stream [ "foo" . ] with-output-stream >> >> There are other ways maybe to make that cleaner but if you only need debug >> output that should fix it for you. >> >>> M: iqlink-gadget draw-gadget* >>> drop [ origin get { 5 5 } gl-fill-rect ] do-matrix "draw-gadget*" . >>> gl-error ; > > ---=--- > Александр > > -- > Find and fix application performance issues faster with Applications Manager > Applications Manager provides deep performance insights into multiple tiers of > your business applications. It resolves application problems quickly and > reduces your MTTR. Get your free trial! > https://ad.doubleclick.net/ddm/clk/302982198;130105516;z > ___ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk -- Find and fix application performance issues faster with Applications Manager Applications Manager provides deep performance insights into multiple tiers of your business applications. It resolves application problems quickly and reduces your MTTR. Get your free trial! https://ad.doubleclick.net/ddm/clk/302982198;130105516;z ___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
Re: [Factor-talk] OpenGL gadget question
Thanks fore the reply! Could someone explain to me in a few words what is do-matrix used for? I'm not sure I need it, I just copied the code from the tetris example. 24.04.2016, 19:51, "John Benediktsson": > You can log to the terminal/console standard output using: > > [ "foo" . ] with-global > > The problem with your listener output issue is probably pref-dim is called > before the new window opens and draw-gadget is called after and the > output-stream (initially set to the listener) is rebound to something other > than the listener you expect it to be. > > You could also save the listener output stream somewhere: > > SYMBOL: my-output-stream > > output-stream get my-output-stream set-global > > Then use it to make sure output goes to the right place: > > my-output-stream [ "foo" . ] with-output-stream > > There are other ways maybe to make that cleaner but if you only need debug > output that should fix it for you. > >> M: iqlink-gadget draw-gadget* >> drop [ origin get { 5 5 } gl-fill-rect ] do-matrix "draw-gadget*" . >> gl-error ; ---=--- Александр -- Find and fix application performance issues faster with Applications Manager Applications Manager provides deep performance insights into multiple tiers of your business applications. It resolves application problems quickly and reduces your MTTR. Get your free trial! https://ad.doubleclick.net/ddm/clk/302982198;130105516;z ___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
Re: [Factor-talk] OpenGL gadget question
You can log to the terminal/console standard output using: [ "foo" . ] with-global The problem with your listener output issue is probably pref-dim is called before the new window opens and draw-gadget is called after and the output-stream (initially set to the listener) is rebound to something other than the listener you expect it to be. You could also save the listener output stream somewhere: SYMBOL: my-output-stream output-stream get my-output-stream set-global Then use it to make sure output goes to the right place: my-output-stream [ "foo" . ] with-output-stream There are other ways maybe to make that cleaner but if you only need debug output that should fix it for you. > On Apr 24, 2016, at 9:40 AM, Alexander Ilinwrote: > > Hello! > > I've got the following gadget implementation: > USING: kernel ui.gadgets > ui.render opengl prettyprint namespaces ; > IN: iqlink.gadget > > TUPLE: iqlink-gadget < gadget ; > > : ( -- gadget ) > iqlink-gadget new ; > > M: iqlink-gadget pref-dim* > drop { 900 600 } "pref-dim*" . ; > > M: iqlink-gadget draw-gadget* > drop [ origin get { 5 5 } gl-fill-rect ] do-matrix "draw-gadget*" . gl-error > ; > > I'm displaying it in a window like so: > [ "IQLink" open-window ] with-ui > > In the Listener output I expect to see the line "draw-gadget*" every time > the window is redrawn. However, I only see "pref-dim*" once, and the line > "draw-gadget*" is never added to the Listener output. It appears as if the > method draw-gadget* is never called. > > What do I do wrong? > > > ---=--- > Александр > > -- > Find and fix application performance issues faster with Applications Manager > Applications Manager provides deep performance insights into multiple tiers of > your business applications. It resolves application problems quickly and > reduces your MTTR. Get your free trial! > https://ad.doubleclick.net/ddm/clk/302982198;130105516;z > ___ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk -- Find and fix application performance issues faster with Applications Manager Applications Manager provides deep performance insights into multiple tiers of your business applications. It resolves application problems quickly and reduces your MTTR. Get your free trial! https://ad.doubleclick.net/ddm/clk/302982198;130105516;z ___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
[Factor-talk] OpenGL gadget question
Hello! I've got the following gadget implementation: USING: kernel ui.gadgets ui.render opengl prettyprint namespaces ; IN: iqlink.gadget TUPLE: iqlink-gadget < gadget ; : ( -- gadget ) iqlink-gadget new ; M: iqlink-gadget pref-dim* drop { 900 600 } "pref-dim*" . ; M: iqlink-gadget draw-gadget* drop [ origin get { 5 5 } gl-fill-rect ] do-matrix "draw-gadget*" . gl-error ; I'm displaying it in a window like so: [ "IQLink" open-window ] with-ui In the Listener output I expect to see the line "draw-gadget*" every time the window is redrawn. However, I only see "pref-dim*" once, and the line "draw-gadget*" is never added to the Listener output. It appears as if the method draw-gadget* is never called. What do I do wrong? ---=--- Александр -- Find and fix application performance issues faster with Applications Manager Applications Manager provides deep performance insights into multiple tiers of your business applications. It resolves application problems quickly and reduces your MTTR. Get your free trial! https://ad.doubleclick.net/ddm/clk/302982198;130105516;z ___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk