Exemple #1
0
 public void cls()
 // clears the texture
 {
     MathUtility.clearBuffer(pixel, 0);
 }
Exemple #2
0
        public void render(Camera cam)
        {
            // Resize if requested
            if (resizingRequested)
            {
                performResizing();
            }
            if (antialiasChangeRequested)
            {
                performAntialiasChange();
            }
            rasterizer.rebuildReferences(this);

            // Clear buffers
            MathUtility.clearBuffer(zBuffer, zFar);
            if (useIdBuffer)
            {
                MathUtility.clearBuffer(idBuffer, uint.MaxValue);
            }
            if (scene.environment.background != null)
            {
                screen.drawBackground(scene.environment.background, 0, 0, screen.w, screen.h);
            }
            else
            {
                screen.clear(scene.environment.bgcolor);
            }

            // Prepare
            cam.setScreensize(screen.w, screen.h);
            scene.prepareForRendering();
            emptyQueues();

            // Project

            var         m = Matrix.multiply(cam.getMatrix(), scene.matrix);
            var         nm = Matrix.multiply(cam.getNormalMatrix(), scene.normalmatrix);
            Matrix      vertexProjection, normalProjection;
            SceneObject obj;
            Triangle    t;
            Vertex      v;
            var         w = screen.w;
            var         h = screen.h;

            for (uint id = 0, length = scene.objects; id < length; id++)
            {
                obj = scene._object[id];
                if (!obj.visible)
                {
                    continue;
                }
                vertexProjection = obj.matrix.Clone();
                normalProjection = obj.normalmatrix.Clone();
                vertexProjection.transform(m);
                normalProjection.transform(nm);

                for (int i = 0, innerlength = obj.numVertices; i < innerlength; i++)
                {
                    v = obj.vertices[i];
                    v.Project(vertexProjection, normalProjection, cam);
                    v.clipFrustrum(w, h);
                }
                for (uint i = 0, innerlength = obj.numTriangles; i < innerlength; i++)
                {
                    t = obj.triangles[i];
                    t.Project(normalProjection);
                    t.ClipFrustrum(w, h);
                    enqueueTriangle(t);
                }
            }

            var tri = getOpaqueQueue();

            if (tri != null)
            {
                var triLength = tri.Length;
                for (var i = triLength - 1; i >= 0; i--)
                {
                    rasterizer.loadMaterial(tri[i].getParent().material);
                    rasterizer.Render(tri[i]);
                }
            }

            tri = getTransparentQueue();
            if (tri != null)
            {
                var triLength = tri.Length;
                for (var i = 0; i < triLength; i++)
                {
                    rasterizer.loadMaterial(tri[i].getParent().material);
                    rasterizer.Render(tri[i]);
                }
            }

            screen.render();
        }
Exemple #3
0
 public void clear(uint bgcolor)
 {
     MathUtility.clearBuffer(p, bgcolor);
 }