\r
if (_fps > fpsMax) {\r
fpsMax = _fps;\r
- ValueChanged(this, new ValueChangeEventArgs ("fpsMax", fpsMax, _fps));\r
+ ValueChanged.Raise(this, new ValueChangeEventArgs ("fpsMax", fpsMax, _fps));\r
} else if (_fps < fpsMin) {\r
- ValueChanged(this, new ValueChangeEventArgs ("fpsMin", fpsMin, _fps));\r
+ ValueChanged.Raise(this, new ValueChangeEventArgs ("fpsMin", fpsMin, _fps));\r
fpsMin = _fps;\r
}\r
\r
if (ValueChanged != null)\r
- ValueChanged(this, new ValueChangeEventArgs ("fps", oldVal, _fps));\r
+ ValueChanged.Raise(this, new ValueChangeEventArgs ("fps", oldVal, _fps));\r
\r
//ValueChanged.Raise (this, new ValueChangeEventArgs ("fps", oldVal, _fps));\r
}\r
#endregion\r
\r
public GOLIBTest_fps ()\r
- : base(400, 200,"test")\r
+ : base(600, 400,"test")\r
{}\r
\r
Container g;\r
#endregion\r
\r
#region graphic contexte\r
- bool recreateContext = true;\r
-\r
Context ctx;\r
Surface surf;\r
byte[] bmp;\r
go.GLBackend.Shader shader;\r
Matrix4 projectionMatrix, \r
modelviewMatrix;\r
+ int[] viewport = new int[4];\r
\r
Rectangle dirtyZone = Rectangle.Empty;\r
-\r
void createContext()\r
- {\r
+ { \r
createOpenGLSurface ();\r
if (uiQuad != null)\r
uiQuad.Dispose ();\r
- uiQuad = new QuadVAO (0, 0, ClientRectangle.Width, ClientRectangle.Height,0,1,1,-1);\r
+ uiQuad = new QuadVAO (0, 0, ClientRectangle.Width, ClientRectangle.Height, 0, 1, 1, -1);\r
projectionMatrix = Matrix4.CreateOrthographicOffCenter \r
(0, ClientRectangle.Width, ClientRectangle.Height, 0, 0, 1);\r
modelviewMatrix = Matrix4.Identity;\r
redrawClip.AddRectangle (ClientRectangle);\r
- recreateContext = false;\r
}\r
void createOpenGLSurface()\r
{\r
bmp = new byte[bmpSize];\r
\r
//create texture\r
- if (texID > 0)\r
+ if (GL.IsTexture(texID))\r
GL.DeleteTexture (texID);\r
GL.GenTextures(1, out texID);\r
GL.ActiveTexture (TextureUnit.Texture0);\r
}\r
void OpenGLDraw()\r
{\r
+ GL.GetInteger (GetPName.Viewport, viewport);\r
+ GL.Viewport (0, 0, ClientRectangle.Width, ClientRectangle.Height);\r
shader.Enable ();\r
shader.ProjectionMatrix = projectionMatrix;\r
shader.ModelViewMatrix = modelviewMatrix;\r
GL.BindTexture(TextureTarget.Texture2D, 0);\r
\r
shader.Disable ();\r
+ GL.Viewport (viewport [0], viewport [1], viewport [2], viewport [3]);\r
}\r
\r
#endregion\r
GraphicObject[] invGOList = new GraphicObject[GraphicObjects.Count];\r
GraphicObjects.CopyTo (invGOList,0);\r
invGOList = invGOList.Reverse ().ToArray ();\r
-//\r
-// foreach (GraphicObject p in invGOList) {\r
-// if (p.Visible) {\r
-// layoutTime.Start ();\r
-// while(!p.LayoutIsValid)\r
-// p.UpdateLayout ();\r
-// layoutTime.Stop ();\r
-// }\r
-// }\r
+\r
while (Interface.LayoutingQueue.Count > 0) {\r
LayoutingQueueItem lqi = Interface.LayoutingQueue.Dequeue ();\r
lqi.ProcessLayouting ();\r
\r
\r
lock (redrawClip) {\r
- if (redrawClip.count > 0) {\r
+ if (redrawClip.count > 0) { \r
// #if DEBUG_CLIP_RECTANGLE\r
// redrawClip.stroke (ctx, new Color(1.0,0,0,0.3));\r
// #endif\r
- redrawClip.clearAndClip (ctx);//rajouté après, tester si utile\r
+ redrawClip.clearAndClip (ctx);//rajouté après, tester si utile \r
+\r
//Link.draw (ctx);\r
foreach (GraphicObject p in invGOList) {\r
if (p.Visible) {\r
redrawClip.Reset ();\r
}\r
}\r
+ //surf.WriteToPng (@"/mnt/data/test.png");\r
ctx.Dispose ();\r
surf.Dispose ();\r
// if (ToolTip.isVisible) {\r
protected override void OnRenderFrame(FrameEventArgs e)\r
{\r
base.OnRenderFrame(e);\r
- if (recreateContext)\r
- createContext ();\r
+// if (recreateContext)\r
+// createContext ();\r
OpenGLDraw ();\r
}\r
protected override void OnLoad(EventArgs e)\r
\r
int matl = GL.GetInteger (GetPName.MaxArrayTextureLayers);\r
int mts = GL.GetInteger (GetPName.MaxTextureSize);\r
+\r
shader = new go.GLBackend.TexturedShader ();\r
}\r
protected override void OnUnload(EventArgs e)\r
protected override void OnResize(EventArgs e)\r
{\r
base.OnResize (e);\r
- recreateContext = true;\r
+ createContext ();\r
+ foreach (GraphicObject g in GraphicObjects) {\r
+ g.RegisterForLayouting ((int)LayoutingType.All);\r
+ //g.registerForGraphicUpdate();\r
+ }\r
}\r
#endregion\r
\r
\r
#region keyboard Handling\r
void Keyboard_KeyDown(object sender, KeyboardKeyEventArgs e)\r
- {\r
+ { \r
if (_focusedWidget == null)\r
return;\r
_focusedWidget.onKeyDown (sender, e);\r