Example #1
0
        private IntPtr RectangleDataPtr()
        {
            TexturedQuadVertex vertex1 = new TexturedQuadVertex();
            TexturedQuadVertex vertex2 = new TexturedQuadVertex();
            TexturedQuadVertex vertex3 = new TexturedQuadVertex();
            TexturedQuadVertex vertex4 = new TexturedQuadVertex();

            vertex1.position = new Vec2(-0.5f, -0.5f);
            vertex2.position = new Vec2(-0.5f, 0.5f);
            vertex3.position = new Vec2(0.5f, -0.5f);
            vertex4.position = new Vec2(0.5f, 0.5f);

            TexturedQuadVertex[] texturedQuadVertexData = new TexturedQuadVertex[4] {
                vertex1, vertex2, vertex3, vertex4
            };

            int    lenght = Marshal.SizeOf(vertex1);
            IntPtr pA     = Marshal.AllocHGlobal(lenght * 4);

            for (int i = 0; i < 4; i++)
            {
                Marshal.StructureToPtr(texturedQuadVertexData[i], pA + i * lenght, true);
            }

            return(pA);
        }
Example #2
0
        private Geometry CreateQuadGeometry()
        {
            PropertyBuffer vertexData = CreatePropertyBuffer();

            TexturedQuadVertex vertex1 = new TexturedQuadVertex();
            TexturedQuadVertex vertex2 = new TexturedQuadVertex();
            TexturedQuadVertex vertex3 = new TexturedQuadVertex();
            TexturedQuadVertex vertex4 = new TexturedQuadVertex();

            vertex1.position = new Vec2(-0.5f, -0.5f);
            vertex2.position = new Vec2(-0.5f, 0.5f);
            vertex3.position = new Vec2(0.5f, -0.5f);
            vertex4.position = new Vec2(0.5f, 0.5f);


            TexturedQuadVertex[] texturedQuadVertexData = new TexturedQuadVertex[4] {
                vertex1, vertex2, vertex3, vertex4
            };

            int    lenght = Marshal.SizeOf(vertex1);
            IntPtr pA     = Marshal.AllocHGlobal(lenght * 4);

            for (int i = 0; i < 4; i++)
            {
                Marshal.StructureToPtr(texturedQuadVertexData[i], pA + i * lenght, true);
            }
            vertexData.SetData(pA, 4);

            Geometry geometry = new Geometry();

            geometry.AddVertexBuffer(vertexData);
            geometry.SetType(Geometry.Type.TRIANGLE_STRIP);
            return(geometry);
        }
Example #3
0
        private global::System.IntPtr RectangleDataPtr()
        {
            TexturedQuadVertex v1 = new TexturedQuadVertex();
            TexturedQuadVertex v2 = new TexturedQuadVertex();
            TexturedQuadVertex v3 = new TexturedQuadVertex();
            TexturedQuadVertex v4 = new TexturedQuadVertex();

            v1.position = new Vec2(-0.5f, -0.5f);
            v2.position = new Vec2(-0.5f, 0.5f);
            v3.position = new Vec2(0.5f, -0.5f);
            v4.position = new Vec2(0.5f, 0.5f);

            TexturedQuadVertex[] texturedQuadVertexData = new TexturedQuadVertex[4] {
                v1, v2, v3, v4
            };

            int length = Marshal.SizeOf(v1);

            global::System.IntPtr pA = Marshal.AllocHGlobal(length * 4);

            for (int i = 0; i < 4; i++)
            {
                Marshal.StructureToPtr(texturedQuadVertexData[i], pA + i * length, true);
            }

            return(pA);
        }
Example #4
0
        // Copy from dali-toolkit/internal/visuals/primitive/primitive-visual.cpp
        // NOTE. I add one more slices for texture coordinate
        private global::System.IntPtr SphereVertexDataPtr()
        {
            TexturedQuadVertex[] vertices = new TexturedQuadVertex[SPHERE_VERTEX_NUMBER];

            const int slices = SPHERE_SLICES;
            const int stacks = SPHERE_STACKS;
            // Build start.
            {
                int   vertexIndex = 0; //Track progress through vertices.
                float x;
                float y;
                float z;

                //Top stack.
                vertices[vertexIndex].position = new Vec3(0.0f, 0.5f, 0.0f);
                vertices[vertexIndex].normal   = new Vec3(0.0f, 1.0f, 0.0f);
                vertices[vertexIndex].texcoord = new Vec2(0.5f, 1.0f);
                vertexIndex++;

                //Middle stacks.
                for (int i = 1; i < stacks; i++)
                {
                    //Note. This vertex method is not common.
                    //We set one more vertexes for correct texture coordinate. at j == slices
                    //j==0 and j==slices have equal position, normal, but there texcoord.x is different
                    for (int j = 0; j <= slices; j++, vertexIndex++)
                    {
                        float cos_j = (float)Math.Cos(2.0f * (float)Math.PI * j / (float)slices);
                        float sin_j = (float)Math.Sin(2.0f * (float)Math.PI * j / (float)slices);
                        float cos_i = (float)Math.Cos((float)Math.PI * i / (float)stacks);
                        float sin_i = (float)Math.Sin((float)Math.PI * i / (float)stacks);
                        x = cos_j * sin_i;
                        y = cos_i;
                        z = sin_j * sin_i;

                        vertices[vertexIndex].position = new Vec3(x / 2.0f, y / 2.0f, z / 2.0f);
                        vertices[vertexIndex].normal   = new Vec3(x, y, z);
                        vertices[vertexIndex].texcoord = new Vec2((float)j / (float)slices, 1.0f - (float)i / (float)stacks);
                    }
                }

                //Bottom stack.
                vertices[vertexIndex].position = new Vec3(0.0f, -0.5f, 0.0f);
                vertices[vertexIndex].normal   = new Vec3(0.0f, -1.0f, 0.0f);
                vertices[vertexIndex].texcoord = new Vec2(0.5f, 0.0f);
            }
            // Build done.

            int length = Marshal.SizeOf(vertices[0]);

            global::System.IntPtr pA = Marshal.AllocHGlobal(length * SPHERE_VERTEX_NUMBER);

            for (int i = 0; i < SPHERE_VERTEX_NUMBER; i++)
            {
                Marshal.StructureToPtr(vertices[i], pA + i * length, true);
            }

            return(pA);
        }
Example #5
0
        private Renderer CreateRenderer()
        {
            TexturedQuadVertex vertex1 = new TexturedQuadVertex();
            TexturedQuadVertex vertex2 = new TexturedQuadVertex();
            TexturedQuadVertex vertex3 = new TexturedQuadVertex();
            TexturedQuadVertex vertex4 = new TexturedQuadVertex();

            vertex1.position = new Vec2(-0.5f, -0.5f);
            vertex2.position = new Vec2(0.5f, -0.5f);
            vertex3.position = new Vec2(-0.5f, 0.5f);
            vertex4.position = new Vec2(0.5f, 0.5f);
            vertex1.texCoord = new Vec2(0.0f, 0.0f);
            vertex2.texCoord = new Vec2(1.0f, 0.0f);
            vertex3.texCoord = new Vec2(0.0f, 1.0f);
            vertex4.texCoord = new Vec2(1.0f, 1.0f);

            TexturedQuadVertex[] texturedQuadVertexData = new TexturedQuadVertex[4] {
                vertex1, vertex2, vertex3, vertex4
            };

            PropertyMap property = new PropertyMap();

            property.Add("aPosition", new PropertyValue((int)PropertyType.Vector2));
            property.Add("aTexCoord", new PropertyValue((int)PropertyType.Vector2));
            PropertyBuffer vertexBuffer = new PropertyBuffer(property);

            const int vertexCount = 4;

            unsafe
            {
                float *pc = (float *)Marshal.UnsafeAddrOfPinnedArrayElement(texturedQuadVertexData, 0);
                IntPtr pA = new IntPtr(pc);
                vertexBuffer.SetData(pA, vertexCount);
            }

            Geometry geometry = new Geometry();

            geometry.AddVertexBuffer(vertexBuffer);
            geometry.SetType(Geometry.Type.TRIANGLE_STRIP);

            // Create the shader
            Shader shader = new Shader(VERSION_3_ES + VERTEX_SHADER, VERSION_3_ES + FRAGMENT_SHADER);

            // Create the renderer
            Renderer renderer = new Renderer(geometry, shader);

            return(renderer);
        }
Example #6
0
        private TexturedQuadVertex[] Quad()
        {
            TexturedQuadVertex v1 = new TexturedQuadVertex();
            TexturedQuadVertex v2 = new TexturedQuadVertex();
            TexturedQuadVertex v3 = new TexturedQuadVertex();
            TexturedQuadVertex v4 = new TexturedQuadVertex();

            v1.position = new Vec2(-0.5f, -0.5f);
            v2.position = new Vec2(-0.5f, 0.5f);
            v3.position = new Vec2(0.5f, -0.5f);
            v4.position = new Vec2(0.5f, 0.5f);

            return(new TexturedQuadVertex[4] {
                v1, v2, v3, v4
            });
        }