Re: [Factor-talk] OpenGL gadget question

2016-04-24 Thread Jon Harper
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 Harper  wrote:
> 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

2016-04-24 Thread Jon Harper
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

2016-04-24 Thread Alexander Ilin
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

2016-04-24 Thread 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. 



> On Apr 24, 2016, at 9:40 AM, Alexander Ilin  wrote:
> 
> 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

2016-04-24 Thread Alexander Ilin
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