codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include "glm/glm.hpp" #include "glm/gtc/matrix_transform.hpp" #include "glm/gtc/type_ptr.hpp" #include "LogicalEngine.hpp" LogicalEngine::LogicalEngine() : wnd(800, 600, "Hello World"), vertices_buffer(2) { shaders_init(); /// glClearColor(1.0f, 0.4f, 0.5f, 1.0f); glEnable(GL_DEPTH_TEST); GLfloat V[3 * 4] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f }; GLfloat P[3 * 4] = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, }; Vertices & vbuff = vertices_buffer.get_vertices_ref(0); vbuff.add_vertices_data(V); pos_loc = glGetAttribLocation(program1.get_program_id(), "inPos"); glVertexAttribPointer(pos_loc, 3, GL_FLOAT, GL_FALSE, 0, NULL); Vertices & pbuff = vertices_buffer.get_vertices_ref(1); pbuff.add_vertices_data(P); col_loc = glGetAttribLocation(program1.get_program_id(), "inCol"); glVertexAttribPointer(col_loc, 3, GL_FLOAT, GL_FALSE, 0, NULL); matrix_projection = glGetUniformLocation(program1.get_program_id(), "mp"); matrix_model = glGetUniformLocation(program1.get_program_id(), "mm"); matrix_view = glGetUniformLocation(program1.get_program_id(), "mv"); } void LogicalEngine::shaders_init() { Shader shader1 = Shader::prepare_shader("test.vertex.glsl", GL_VERTEX_SHADER); Shader shader2 = Shader::prepare_shader("test.fragment.glsl", GL_FRAGMENT_SHADER); program1.attach_shader(shader1, "vertex1"); program1.attach_shader(shader2, "fragment1"); if(!(shader1.compile() && shader2.compile())) { exit(1); } program1.do_linking(); } void LogicalEngine::main_loop() { sf::Event evt; while(wnd.IsOpened()) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearDepth(1.0f); glm::mat4 Projection = glm::perspective(60.0f, 4.0f/3.0f, -0.1f, 7.0f); glm::mat4 View = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -5.f)); glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f)); glEnableVertexAttribArray(pos_loc); glEnableVertexAttribArray(col_loc); program1.use(); glUniformMatrix4fv(matrix_projection, 1, GL_FALSE, glm::value_ptr(Projection)); glUniformMatrix4fv(matrix_view, 1, GL_FALSE, glm::value_ptr(View)); glUniformMatrix4fv(matrix_model, 1, GL_FALSE, glm::value_ptr(Model)); glDrawArrays(GL_QUADS, 0, 4); ShaderProgram::use_no_program(); glDisableVertexAttribArray(col_loc); glDisableVertexAttribArray(pos_loc); while(wnd.GetEvent(evt)) { switch(evt.Type) { case sf::Event::Closed: exit(0); case sf::Event::Resized: glViewport(0, 0, evt.Size.Width, evt.Size.Height); break; default: break; } } glFlush(); wnd.Display(); sf::Sleep(0.5f); } } LogicalEngine::~LogicalEngine() { } //// SHADER: #version 150 in vec4 inPos; in vec4 inCol; uniform mat4x4 mm; uniform mat4x4 mp; uniform mat4x4 mv; out vec4 color; void main(void) { gl_Position = mp * mm * mv * inPos; //gl_Position = inPos; color = inCol; }
Private
[
?
]
Run code
Submit