コード例 #1
0
 public TextureGenerator(IOpenGLObjectFactory openGLFactory, TType type, ITexture[] out_textures, ITexture[] in_textures = null)
 {
     _openGLFactory = openGLFactory;
     _type          = type;
     _out_textures  = new List <ITexture>(out_textures);
     if (in_textures != null)
     {
         _in_textures = new List <ITexture>(in_textures);
     }
 }
コード例 #2
0
            public AssimpModelBuilder(IOpenGLObjectFactory openGLFactory, Stream filestream)
            {
                _openGLFactory = openGLFactory;

                AssimpContext importer = new AssimpContext();

                importer.SetConfig(new NormalSmoothingAngleConfig(66.0f));
                _assimpmodel = importer.ImportFileFromStream(filestream, flags);

                Matrix4x4 identity = Matrix4x4.Identity;

                CreateBuffers(_assimpmodel.RootNode, null, ref identity);
            }
コード例 #3
0
            public TrefoilKnotBuilder(IOpenGLObjectFactory objectFactory, int slices, int stacks, float ra, float rb, float rc, float rd, float[] c)
            {
                (float[] attributes, uint[] indices) = new TrefoilKnot(slices, stacks, ra, rb, rc, rd, c).Create();
                int tuple_size = 12;

                ModelNode node = new ModelNode(objectFactory);

                _model._root_node = node;
                node.ModelMatrix  = Matrix4.Identity;
                AABB mesh_box = new AABB();

                // extend bounding box by vertices
                for (int i = 0; i < attributes.Length; i += tuple_size)
                {
                    Vector3 vertex = new Vector3(attributes[i], attributes[i + 1], attributes[i + 2]);
                    mesh_box          = mesh_box | vertex;
                    _model._scene_box = _model._scene_box | vertex;
                }

                // create Mesh
                OpenTK_library.Scene.Mesh mesh = new OpenTK_library.Scene.Mesh();
                mesh.TupleSize = (uint)tuple_size;
                mesh.Box       = mesh_box;
                node.Add(mesh);

                mesh.VertexAttribute = (0, 3);
                mesh.NormalAttribute = (3, 3);
                mesh.AddTextureAttrib((6, 2));
                mesh.AddColorAttrib((8, 4));

                TVertexFormat[] format =
                {
                    new TVertexFormat(0, vertex_index,   3, 0, false),
                    new TVertexFormat(0, normal_index,   3, 3, false),
                    new TVertexFormat(0, texture0_index, 2, 6, false),
                    new TVertexFormat(0,              2, 4, 8, false),
                };

                // setup vertex arrays and index array
                var vao = openGLFactory.NewVertexArrayObject();

                vao.AppendVertexBuffer(0, (int)tuple_size, attributes);
                vao.Create(format, indices);

                mesh.FaceSize    = 3;
                mesh.VertexArray = vao;
            }
コード例 #4
0
 public static AssimpModelBuilder Create(IOpenGLObjectFactory openGLFactory, Stream filestream)
 {
     return(new AssimpModelBuilder(openGLFactory, filestream));
 }
コード例 #5
0
 public static AssimpModelBuilder Create(IOpenGLObjectFactory openGLFactory, string filename)
 {
     return(new AssimpModelBuilder(openGLFactory, filename));
 }
コード例 #6
0
 public static TrefoilKnotBuilder Create(IOpenGLObjectFactory objectFactory, int slices = 256, int stacks = 32, float ra = 0.6f, float rb = 0.2f, float rc = 0.4f, float rd = 0.175f, float[] c = null)
 {
     return(new TrefoilKnotBuilder(objectFactory, slices, stacks, ra, rb, rc, rd, c));
 }