123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Drawing;
- using OpenTK;
- using OpenTK.Graphics.OpenGL;
- using MathNet.Numerics.LinearAlgebra.Single;
- using bbiwarg.DataSource;
- namespace Test.bbiwarg
- {
- class OutputTest : GameWindow
- {
- IVideoDataSource source;
- static void Main(string[] args)
- {
- OutputTest demo = new OutputTest();
- demo.initSource();
- demo.Run(30);
- }
- public void initSource()
- {
- source = new IIsuDataSource("..\\..\\videos\\10.skv");
- source.init();
- source.start();
- }
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
- Title = "OutputTest";
- GL.ClearColor(Color.CornflowerBlue);
- }
- protected override void OnRenderFrame(FrameEventArgs e)
- {
- base.OnRenderFrame(e);
- bool isActive = source.isActive();
- if (isActive)
- {
- source.updateFrame();
- }
- GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
- Matrix4 modelview = Matrix4.LookAt(Vector3.Zero, -Vector3.UnitZ, Vector3.UnitY);
- GL.MatrixMode(MatrixMode.Modelview);
- GL.LoadMatrix(ref modelview);
-
-
- DepthImage depthImage = source.getDepthImage();
- int width = depthImage.getWidth();
- int height = depthImage.getHeight();
- for (int x = 0; x < width; x++) {
- for (int y = 0; y < height; y++) {
- short depth = depthImage.getDepth(x, y);
- int relX = x - width / 2;
- int relY = y - height / 2;
- GL.Begin(BeginMode.Polygon);
- GL.Vertex3(relX-0.5f, relY+0.5f, -depth);
- GL.Vertex3(relX+0.5f, relY+0.5f, -depth);
- GL.Vertex3(relX+0.5f, relY-0.5f, -depth);
- GL.Vertex3(relX-0.5f, relY-0.5f, -depth);
- GL.End();
- }
- }
- /*
- GL.Begin(BeginMode.Triangles);
- GL.Vertex3(0.0f, 0.0f, -4.0f);
- GL.Vertex3(2.0f, 0.0f, -4.0f);
- GL.Vertex3(0.0f, 1.0f, -4.0f);
- GL.End();
- */
- SwapBuffers();
- if(isActive) {
- source.releaseFrame();
- }
- /*
- GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
- Matrix4 modelview = Matrix4.LookAt(Vector3.Zero, Vector3.UnitZ, Vector3.UnitY);
- GL.MatrixMode(MatrixMode.Modelview);
- GL.LoadMatrix(ref modelview);
- // triangle
- GL.Begin(BeginMode.Triangles);
- float x = palmPosition.Value._X;
- float y = palmPosition.Value._Y;
- float z = palmPosition.Value._Z;
- GL.Vertex3(-1.0f + x, -1.0f + z, 4.0f - 10 * y);
- GL.Vertex3(1.0f, -1.0f, 4.0f);
- GL.Vertex3(0.0f, 1.0f, 4.0f);
- GL.End();
- SwapBuffers();*/
- }
- protected override void OnResize(EventArgs e)
- {
- base.OnResize(e);
- GL.Viewport(ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width, ClientRectangle.Height);
- Matrix4 projection = Matrix4.CreatePerspectiveFieldOfView((float)Math.PI / 4, Width / (float)Height, 1.0f, 640.0f);
- GL.MatrixMode(MatrixMode.Projection);
- GL.LoadMatrix(ref projection);
- }
- }
- }
|