コード例 #1
0
ファイル: Program.cs プロジェクト: hskrivanek/HSEngine
        static void Main()
        {
            var renderer = new Renderer();
            var game     = new Game(renderer);

            var vertShaderString = File.ReadAllText("Assets/Shaders/basic.vert");
            var fragShaderString = File.ReadAllText("Assets/Shaders/basic.frag");

            RawModel model;

            using (var reader = new StreamReader("Assets/Models/dragon.obj"))
            {
                model = new RawModel(ObjParser.LoadModel(reader));
            }

            var textureData = new ImageSharpTexture("Assets/Textures/white.png");
            var shaderSet   = new ShaderSet(vertShaderString, fragShaderString);

            renderer.Initialize(true);

            var mesh   = renderer.CreateMesh(model, textureData, shaderSet);
            var entity = new RenderableEntity(new Transform(new Vector3(0, -5, -10), new Vector3(), 1), mesh);

            entity.InitializeMesh(renderer);

            game.AddEntity(entity);
            game.AddEntity(new CameraController());

            game.RunMainLoop();
            renderer.DisposeGraphicsDevices();
        }
コード例 #2
0
 public SpriteRenderer(SpriteShader _shader)
 {
     UIQuad = Loader.LoadToVAO(Geometry.GetVertex(Geometries.Quad), Geometry.GetVertexName(Geometries.Quad));
     shader = _shader;
     shader.Start();
     shader.Stop();
 }
コード例 #3
0
ファイル: Entity.cs プロジェクト: senapp/senappGameEngine
        public Entity(string objectFileName = null, string textureFileName = null, string ext = ".png")
        {
            var      vertex   = OBJLoader.LoadOBJModel(objectFileName);
            RawModel rawModel = Loader.LoadToVAO(vertex, objectFileName);

            model = new TexturedModel(rawModel, Loader.LoadTexture(textureFileName, ext));
        }
コード例 #4
0
        public void Render(Entity entity, StaticShader shader)
        {
            TexturedModel texturedModel = entity.TexturedModel;
            RawModel      model         = texturedModel.RawModel;

            GL.BindVertexArray(model.vaoID);
            GL.EnableVertexAttribArray(0);
            GL.EnableVertexAttribArray(1);
            GL.EnableVertexAttribArray(2);

            Matrix4 transformationMatrix = Maths.CreateTransformationMatrix(
                entity.Position,
                entity.RotationX,
                entity.RotationY,
                entity.RotationZ,
                entity.Scale);

            shader.LoadTransformationMatrix(ref transformationMatrix);

            ModelTexture modelTexture = entity.TexturedModel.Texture;

            shader.LoadShineVariables(modelTexture.ShineDamper, modelTexture.Reflectivity);

            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, texturedModel.Texture.TextureID);
            GL.DrawElements(PrimitiveType.Triangles, model.vertexCount, DrawElementsType.UnsignedInt, 0);
            GL.DisableVertexAttribArray(0);
            GL.DisableVertexAttribArray(1);
            GL.DisableVertexAttribArray(2);
            GL.BindVertexArray(0);
        }
コード例 #5
0
 public void BindCharacter(RawModel character)
 {
     GL.Disable(EnableCap.DepthTest);
     GL.BindVertexArray(character.vaoID);
     GL.EnableVertexAttribArray(0);
     GL.EnableVertexAttribArray(1);
 }
コード例 #6
0
        public void Render(Matrix4 viewMatrix, Matrix4 projectionMatrix)
        {
            if (bPostConstructor)
            {
                shader  = PoolProxy.GetResource <ObtainShaderPool, ShaderAllocationPolicy <SkyboxShader>, string, SkyboxShader>(String.Format("{0}{1},{0}{2}", ProjectFolders.ShadersPath, "skyboxVS.glsl", "skyboxFS.glsl"));
                model   = new RawModel(attribs);
                cubemap = ProxyTextureLoader.LoadCubemap(new string[] {
                    ProjectFolders.SkyboxTexturesPath + "/Day/" + "right.bmp",
                    ProjectFolders.SkyboxTexturesPath + "/Day/" + "left.bmp",
                    ProjectFolders.SkyboxTexturesPath + "/Day/" + "top.bmp",
                    ProjectFolders.SkyboxTexturesPath + "/Day/" + "bottom.bmp",
                    ProjectFolders.SkyboxTexturesPath + "/Day/" + "back.bmp",
                    ProjectFolders.SkyboxTexturesPath + "/Day/" + "front.bmp"
                });


                bPostConstructor = false;
            }

            shader.startProgram();
            cubemap.BindTexture(OpenTK.Graphics.OpenGL.TextureUnit.Texture0);
            shader.SetTransformationMatrices(Matrix4.Identity, viewMatrix, projectionMatrix);
            shader.SetCubemap(0);
            VAOManager.renderBuffers(model.Buffer, OpenTK.Graphics.OpenGL.PrimitiveType.Triangles);
            shader.stopProgram();
        }
コード例 #7
0
 public void RenderModel(RawModel model)
 {
     GL.BindVertexArray(model.vaoID);
     GL.EnableVertexArrayAttrib(model.vaoID, 0);
     GL.DrawElements(BeginMode.Triangles, model.vertexCount, DrawElementsType.UnsignedInt, 0);
     GL.DisableVertexArrayAttrib(model.vaoID, 0);
     GL.BindVertexArray(0);
 }
コード例 #8
0
ファイル: Terrain.cs プロジェクト: nekithp7/gl-engine
        public Terrain(int gridX, int gridZ, Loader loader, ModelTexture texture)
        {
            this.texture = texture;
            x            = gridX * SIZE;
            z            = gridZ * SIZE;

            model = GenerateTerrain(loader);
        }
コード例 #9
0
 public void Render(RawModel model)
 {
     GL.BindVertexArray(model.VaoID);
     GL.EnableVertexAttribArray(0);
     GL.DrawArrays(PrimitiveType.Triangles, 0, model.VertexCount);
     GL.DisableVertexAttribArray(0);
     GL.BindVertexArray(0);
 }
コード例 #10
0
ファイル: Actor.cs プロジェクト: HighlightDev/HighlightEngine
 public Actor(RawModel model, ITexture texture, BasicShader shader)
 {
     ComponentScale       = new Vector3(1);
     ComponentTranslation = new Vector3(0);
     ComponentRotation    = new Vector3(0);
     this.texture         = texture;
     rawModel             = model;
     this.shader          = shader;
 }
コード例 #11
0
        public SkyboxRenderer(SkyboxShader _shader, Matrix4 projectionMatrix)
        {
            start           = Settings.GetSetting(Settings.ConfigSettings.SKYBOX_FILE_PREFIX);
            cube            = Loader.LoadToVAO(VERTICES, 3);
            skyboxTextureID = Loader.LoadCubeMap(TEXTURES_FILES, start);

            shader = _shader;
            shader.Start();
            shader.LoadProjectionMatrix(projectionMatrix);
            shader.Stop();
        }
コード例 #12
0
        private void PrepareTerrain(Terrain terrain)
        {
            RawModel model = terrain.model;

            GL.BindVertexArray(model.vaoID);
            GL.EnableVertexAttribArray(0);
            GL.EnableVertexAttribArray(1);
            GL.EnableVertexAttribArray(2);
            BindTextures(terrain);
            shader.LoadShineVariables(1, 0);
        }
コード例 #13
0
        private void prepareTerrain(Terrain terrain)
        {
            RawModel rawModel = terrain.model;

            Gl.BindVertexArray(rawModel.vaoID);
            Gl.EnableVertexAttribArray(0);
            Gl.EnableVertexAttribArray(1);
            Gl.EnableVertexAttribArray(2);
            bindTextures(terrain);
            shader.loadVariables(1, 0);
        }
コード例 #14
0
        public RawModel LoadToVao(float[] positions, int[] indicies, float[] uvs)
        {
            int vaoId = CreateVao();

            BindIndiciesBuffer(indicies);
            StoreDataInAttributeArray(0, positions, 3);
            StoreDataInAttributeArray(1, uvs, 2);
            UnbindVao();
            _model = new RawModel(vaoId, indicies.Length, uvs.Length / 2);
            return(_model);
        }
コード例 #15
0
ファイル: Entity.cs プロジェクト: ElQwerto110100100/MyCode
 public Entity(RawModel model, Shader shader, Vector3 position = new Vector3(), float rotX = 1, float rotY = 1, float rotZ = 1, float scale = 1)
 {
     Position    = position;
     Model       = model;
     Scale       = scale;
     RotX        = rotX;
     RotY        = rotY;
     RotZ        = rotZ;
     EnityMatrix = Maths.CreateTransmatrix(new Vector3(Position.X, Position.Y, Position.Z), rotX, rotY, rotZ, scale);
     Shader      = shader;
 }
コード例 #16
0
ファイル: MainWindow.xaml.cs プロジェクト: Netskyes/botbase
        private void GlControl_ContextCreated(object sender, GlControlEventArgs e)
        {
            Gl.MatrixMode(MatrixMode.Projection);
            Gl.LoadIdentity();
            Gl.Ortho(0.0, 1024, 768, 0.0, 0.0, 1);
            Gl.MatrixMode(MatrixMode.Modelview);
            Gl.LoadIdentity();

            Loader   = new Loader();
            Renderer = new Renderer();

            Model = Loader.Load(canvas);
        }
コード例 #17
0
        public void Render(TexturedModel texturedModel)
        {
            RawModel model = texturedModel.Model;

            GL.BindVertexArray(model.VaoID);
            GL.EnableVertexAttribArray(0);
            GL.EnableVertexAttribArray(1);
            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, texturedModel.Texture.textureID);
            GL.DrawElements(PrimitiveType.Triangles, model.VertexCount, DrawElementsType.UnsignedInt, 0);
            GL.DisableVertexAttribArray(0);
            GL.DisableVertexAttribArray(1);
            GL.BindVertexArray(0);
        }
コード例 #18
0
        //he changes the render function but Im going to make 2 seperate ones
        public void RenderTexturedModel(TexturedModel texturedModel)
        {
            RawModel model = texturedModel.Model;

            GL.BindVertexArray(model.vaoID);
            GL.EnableVertexArrayAttrib(model.vaoID, 0);
            GL.EnableVertexArrayAttrib(model.vaoID, 1);
            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, texturedModel.ModelTexture.TextureID);
            GL.DrawElements(BeginMode.Triangles, model.vertexCount, DrawElementsType.UnsignedInt, 0);
            GL.DisableVertexArrayAttrib(model.vaoID, 0);
            GL.DisableVertexArrayAttrib(model.vaoID, 1);
            GL.BindVertexArray(0);
        }
コード例 #19
0
        private void prepareTexturedModel(TexturedModel model)
        {
            RawModel rawModel = model.rawModel;

            Gl.BindVertexArray(rawModel.vaoID);
            Gl.EnableVertexAttribArray(0);
            Gl.EnableVertexAttribArray(1);
            Gl.EnableVertexAttribArray(2);
            ModelTexture texture = model.modelTexture;

            shader.loadVariables(texture.shineDamper, texture.reflectivity);
            Gl.ActiveTexture(TextureUnit.Texture0);                                // activate texture
            Gl.BindTexture(TextureTarget.Texture2d, model.modelTexture.textureId); // pass coords
        }
コード例 #20
0
        private void prepareTerrain(Terrain terrain)
        {
            RawModel rawModel = terrain.model;

            Gl.BindVertexArray(rawModel.vaoID);
            Gl.EnableVertexAttribArray(0);
            Gl.EnableVertexAttribArray(1);
            Gl.EnableVertexAttribArray(2);
            ModelTexture texture = terrain.texture;

            shader.loadVariables(texture.shineDamper, texture.reflectivity);
            Gl.ActiveTexture(TextureUnit.Texture0);
            Gl.BindTexture(TextureTarget.Texture2d, texture.textureId);
        }
コード例 #21
0
        public void render(TexturedModel texturedModel)
        {
            RawModel model = texturedModel.rawModel;

            Gl.BindVertexArray(model.vaoID);
            Gl.EnableVertexAttribArray(0);
            Gl.EnableVertexAttribArray(1);
            Gl.ActiveTexture(TextureUnit.Texture0);
            Gl.BindTexture(TextureTarget.Texture2d, texturedModel.modelTexture.textureId);
            Gl.DrawElements(PrimitiveType.Triangles, model.vertexCount, DrawElementsType.UnsignedInt, IntPtr.Zero);
            Gl.DisableVertexAttribArray(0);
            Gl.DisableVertexAttribArray(1);
            Gl.BindVertexArray(0);
        }
コード例 #22
0
ファイル: TerrainRenderer.cs プロジェクト: podobar/GK_P4
        private void prepareTerrain(Terrain terrain)
        {
            RawModel rawModel = terrain.Model;

            GL.BindVertexArray(rawModel.VaoID);
            GL.EnableVertexAttribArray(0);
            GL.EnableVertexAttribArray(1);
            GL.EnableVertexAttribArray(2);

            ModelTexture texture = terrain.Texture;

            shader.LoadShineVariables(texture.shineDamper, texture.reflectivity);
            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, terrain.Texture.textureID);
        }
コード例 #23
0
        public void Start()
        {
            loader   = new Loader();
            shader   = new StaticShader();
            cam      = new Camera();
            renderer = new Renderer(WIDTH, HEIGHT, shader);

            model = OBJLoader.LoadObjFile("Resources\\stall.obj", loader);
            //model = loader.LoadToVAO(vertices, textureCoords, indicies);
            modelTexture  = new ModelTexture(loader.LoadTexture("Resources\\stallimage.jpg"));
            texturedModel = new TexturedModel(model, modelTexture);

            entity = new Entity(texturedModel, new Vector3(0, 0, -25), 0, 0, 0, 1);

            Run(FPS_CAP);
        }
コード例 #24
0
        public Game(int width, int height)
        {
            this.Window = new GameWindow(width, height, new OpenTK.Graphics.GraphicsMode(new OpenTK.Graphics.ColorFormat(), 2, 4, 4));
            this.Loader = new Loader();
            this.model  = this.Loader.LoadRawModel(this.vertices, this.textureCoords, null, this.indices);

            this.ComputeShader = new Shaders.ComputeShader(@"..\..\..\Shaders\ComputeShader.glsl");
            this.StaticShader  = new StaticShader();

            //string[] cubeMap = new string[]
            //{
            //    "../../../res/right.jpg",
            //    "../../../res/left.jpg",
            //    "../../../res/top.jpg",
            //    "../../../res/bottom.jpg",
            //    "../../../res/back.jpg",
            //    "../../../res/front.jpg",
            //};

            string[] cubeMap = new string[]
            {
                "../../../res/right.png",
                "../../../res/left.png",
                "../../../res/top.png",
                "../../../res/bottom.png",
                "../../../res/back.png",
                "../../../res/front.png",
            };

            this.SkyboxTex = this.Loader.LoadCubeTexture(cubeMap);

            this.Init();

            //this.cameraViewMatrix *= Matrix4.CreateTranslation(-0.5f, 0.0f, 0.0f);
            this.cameraViewMatrix = Matrix4.Identity;
            //this.cameraViewMatrix *= Matrix4.CreateRotationX((float)Math.PI / 10);
            //this.cameraViewMatrix *= Matrix4.CreateTranslation(0.0f, 100.0f, 100.0f);
            //this.cameraViewMatrix *= Matrix4.CreateTranslation(3.0f, 3.0f, 5.0f);
            //this.cameraViewMatrix *= Matrix4.CreateTranslation(0.0f, 100.0f, 10.0f);

            this.cameraViewMatrix *= Matrix4.CreateRotationX(MathHelper.DegreesToRadians(10));

            //this.cameraViewMatrix *= Matrix4.CreateRotationX(-MathHelper.DegreesToRadians(50));
            this.cameraViewMatrix *= Matrix4.CreateTranslation(0.0f, -10.0f, 60.0f);

            this.cameraViewMatrix *= Matrix4.CreateRotationY(MathHelper.DegreesToRadians(RotY));
        }
コード例 #25
0
        public void render(TexturedModel texturedModel, StaticShader shader)
        {
            RawModel model = texturedModel.rawModel;

            Gl.BindVertexArray(model.vaoID);
            Gl.EnableVertexAttribArray(0);
            Gl.EnableVertexAttribArray(1);
            // uncomment lines to see shape
            //Matrix4f mat = Maths.createTransformationMatrix(new Vertex3f(0, 0, 0), 0, 0, 0, 1);
            //shader.loadTransformationMatrix(mat);
            Gl.ActiveTexture(TextureUnit.Texture0);                                        // activate texture
            Gl.BindTexture(TextureTarget.Texture2d, texturedModel.modelTexture.textureId); // pass coords
            Gl.DrawElements(PrimitiveType.Triangles, model.vertexCount, DrawElementsType.UnsignedInt, IntPtr.Zero);
            Gl.DisableVertexAttribArray(0);
            Gl.DisableVertexAttribArray(1);
            Gl.BindVertexArray(0);
        }
コード例 #26
0
        private void RenderBasePass()
        {
            if (PostConstructor)
            {
                CollisionBoxModel = new RawModel(ProxyModelLoader.LoadModel(CollisionBoxPath));
                DefaultTexture    = ProxyTextureLoader.LoadSingleTexture(ProjectFolders.TextureAtlasPath + "\\default.jpg");
                DefaultShader     = new BasicShader(ProjectFolders.ShadersPath + "\\basicVS.glsl", ProjectFolders.ShadersPath + "\\basicFS.glsl");
                PostConstructor   = false;
            }

            if (actor != null && !bComponentHierarchyIsDirty)
            {
                actor.Render(EditorCamera.ViewMatrix, projectionMatrix);
            }

            skybox.Render(EditorCamera.ViewMatrix, projectionMatrix);
        }
コード例 #27
0
        public void render(Entity entity, StaticShader shader)
        {
            TexturedModel model    = entity.model;
            RawModel      rawModel = model.rawModel;

            Gl.BindVertexArray(rawModel.vaoID);
            Gl.EnableVertexAttribArray(0);
            Gl.EnableVertexAttribArray(1);
            Matrix4f transformationMatrix = Maths.createTransformationMatrix(entity.position, entity.rotX, entity.rotY, entity.rotZ, entity.scale);

            shader.loadTransformationMatrix(transformationMatrix);
            Gl.ActiveTexture(TextureUnit.Texture0);
            Gl.BindTexture(TextureTarget.Texture2d, model.modelTexture.textureId);
            Gl.DrawElements(PrimitiveType.Triangles, rawModel.vertexCount, DrawElementsType.UnsignedInt, IntPtr.Zero);
            Gl.DisableVertexAttribArray(0);
            Gl.DisableVertexAttribArray(1);
            Gl.BindVertexArray(0);
        }
コード例 #28
0
        private void prepareTexturedModel(TexturedModel model)
        {
            RawModel rawModel = model.rawModel;

            Gl.BindVertexArray(rawModel.vaoID);
            Gl.EnableVertexAttribArray(0);
            Gl.EnableVertexAttribArray(1);
            Gl.EnableVertexAttribArray(2);
            ModelTexture texture = model.modelTexture;

            if (texture.isHasTransparency)
            {
                MasterRenderer.disableCulling();
            }
            shader.loadFakeLighting(texture.isUseFakeLighting);
            shader.loadVariables(texture.shineDamper, texture.reflectivity);
            Gl.ActiveTexture(TextureUnit.Texture0);                                // activate texture
            Gl.BindTexture(TextureTarget.Texture2d, model.modelTexture.textureId); // pass coords
        }
コード例 #29
0
        public void PrepareTexturedModel(TexturedModel texturedModel)
        {
            if (texturedModel.hasTransparency)
            {
                MasterRenderer.DisableCulling();
            }
            RawModel model = texturedModel.rawModel;

            GL.BindVertexArray(model.vaoID);
            GL.EnableVertexAttribArray(0);
            GL.EnableVertexAttribArray(1);
            GL.EnableVertexAttribArray(2);
            shader.LoadUseFakeLightingVariable(texturedModel.useFakeLighting);
            shader.LoadShineVariables(texturedModel.shineDamper, texturedModel.reflectivity, texturedModel.luminosity);
            shader.LoadEnviromentMap(1);
            GL.ActiveTexture(TextureUnit.Texture1);
            GL.BindTexture(TextureTarget.TextureCubeMap, SkyboxRenderer.skyboxTextureID);
            texturedModel.BindTexture(OpenTK.Graphics.OpenGL4.TextureUnit.Texture0);
        }
コード例 #30
0
        public Game()
        {
            this.Display      = new DisplayManager(1280, 720);
            this.Loader       = new Loader();
            this.StaticShader = new StaticShader();
            this.Renderer     = new Renderer(this.StaticShader);

            //this.TestModel = this.Loader.LoadToVAO(vertices, textureCoords, indices);
            this.TestModel = OBJLoader.LoadModelOBJ("dragon", this.Loader);
            this.texture   = new ModelTexture(this.Loader.LoadTexture("white"));
            //this.texture.Reflectivity = 1;
            //this.texture.ShineDamper = 10;
            this.texturedModel = new TexturedModel(this.TestModel, this.texture);
            this.entity        = new Entity(this.texturedModel, new Vector3(0, 0f, -25f), 0, 0, 0, 0.1f);
            this.light         = new Light(new Vector3(0, 0, -30f), new Vector3(1f, 1f, 1f));
            this.camera        = new Camera();

            this.Init();
        }