incomplete basic variant of the GLApp class
This commit is contained in:
parent
25d5f5bc11
commit
a5b5a7fdff
@ -1,7 +1,7 @@
|
|||||||
cmake_minimum_required(VERSION 3.2)
|
cmake_minimum_required(VERSION 3.2)
|
||||||
project(glTest)
|
project(glTest)
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -DGLEW_STATIC -O0 -g")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -g")
|
||||||
set(CMAKE_BUILD_TYPE DEBUG)
|
set(CMAKE_BUILD_TYPE DEBUG)
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
|
||||||
@ -11,14 +11,7 @@ if(APPLE)
|
|||||||
set(OPENGL_LIBRARIES ${OPENGL_FRAMEWORK})
|
set(OPENGL_LIBRARIES ${OPENGL_FRAMEWORK})
|
||||||
else()
|
else()
|
||||||
find_package(OpenGL REQUIRED)
|
find_package(OpenGL REQUIRED)
|
||||||
find_library(x11 NAMES X11)
|
set(OPENGL_LIBRARIES ${OPENGL_LIBRARIES})
|
||||||
find_library(xrandr NAMES Xrandr)
|
|
||||||
find_library(xi NAMES Xi)
|
|
||||||
find_library(xxf86vm NAMES Xxf86vm)
|
|
||||||
find_library(pthread NAMES pthread)
|
|
||||||
find_library(Xinerama NAMES Xinerama)
|
|
||||||
find_library(Xcursor NAMES Xcursor)
|
|
||||||
set(OPENGL_LIBRARIES rt asound ${OPENGL_LIBRARIES} ${x11} ${xrandr} ${xi} ${xxf86vm} ${Xinerama} ${Xcursor} ${pthread})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
|
|||||||
@ -12,7 +12,7 @@ Camera *Camera::instance() {
|
|||||||
return &camera;
|
return &camera;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Camera::storeUniformVars() {
|
void Camera::storeUniformVars() const {
|
||||||
// GLint view = glGetUniformLocation(program, "mView");
|
// GLint view = glGetUniformLocation(program, "mView");
|
||||||
// glUniformMatrix4fv(view, 1, GL_FALSE, glm::value_ptr(mView));
|
// glUniformMatrix4fv(view, 1, GL_FALSE, glm::value_ptr(mView));
|
||||||
// GLint projection = glGetUniformLocation(program, "mProjection");
|
// GLint projection = glGetUniformLocation(program, "mProjection");
|
||||||
|
|||||||
@ -11,9 +11,9 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Camera();
|
Camera();
|
||||||
Camera(Camera&) = delete;
|
Camera(const Camera&) = delete;
|
||||||
void operator=(Camera&) = delete;
|
void operator=(const Camera&) = delete;
|
||||||
void storeUniformVars();
|
void storeUniformVars() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static Camera* instance();
|
static Camera* instance();
|
||||||
|
|||||||
58
src/GLApp.cpp
Normal file
58
src/GLApp.cpp
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#include "GLApp.h"
|
||||||
|
#include <GL/glew.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
bool wired = false;
|
||||||
|
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
|
||||||
|
{
|
||||||
|
if (key == GLFW_KEY_M && action == GLFW_PRESS) {
|
||||||
|
glPolygonMode(GL_FRONT_AND_BACK, wired ? GL_FILL : GL_LINE);
|
||||||
|
wired = !wired;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GLApp::GLApp() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
GLApp *GLApp::instance() {
|
||||||
|
static GLApp app;
|
||||||
|
return &app;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLApp::updateFpsCounter() const {
|
||||||
|
static double previous_seconds = glfwGetTime ();
|
||||||
|
static int frame_count;
|
||||||
|
double current_seconds = glfwGetTime ();
|
||||||
|
double elapsed_seconds = current_seconds - previous_seconds;
|
||||||
|
if (elapsed_seconds > 0.25) {
|
||||||
|
previous_seconds = current_seconds;
|
||||||
|
double fps = (double)frame_count / elapsed_seconds;
|
||||||
|
char tmp[128];
|
||||||
|
sprintf (tmp, "opengl @ fps: %.2f", fps);
|
||||||
|
glfwSetWindowTitle (_window, tmp);
|
||||||
|
frame_count = 0;
|
||||||
|
}
|
||||||
|
frame_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLApp::init() {
|
||||||
|
glfwInit();
|
||||||
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||||
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||||
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||||
|
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
||||||
|
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
|
||||||
|
glfwWindowHint (GLFW_SAMPLES, 4);
|
||||||
|
|
||||||
|
_window = glfwCreateWindow(1024, 1024, "OpenGL", nullptr, nullptr); // Windowed
|
||||||
|
glfwMakeContextCurrent(_window);
|
||||||
|
glfwSetKeyCallback(_window, key_callback);
|
||||||
|
|
||||||
|
glewExperimental = GL_TRUE;
|
||||||
|
GLenum err = glewInit();
|
||||||
|
if(err != GLEW_OK) {
|
||||||
|
std::cout << "GLEW error: " << err << ": " << glewGetErrorString(err) << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
22
src/GLApp.h
Normal file
22
src/GLApp.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef GLTEST_GLAPP_H
|
||||||
|
#define GLTEST_GLAPP_H
|
||||||
|
|
||||||
|
#include <GLFW/glfw3.h>
|
||||||
|
|
||||||
|
class GLApp {
|
||||||
|
private:
|
||||||
|
GLFWwindow* _window;
|
||||||
|
|
||||||
|
private:
|
||||||
|
GLApp();
|
||||||
|
GLApp(const GLApp&) = delete;
|
||||||
|
void operator=(const GLApp&) = delete;
|
||||||
|
void updateFpsCounter() const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
static GLApp* instance();
|
||||||
|
void init();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //GLTEST_GLAPP_H
|
||||||
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
glm::vec3 eye(0.0f, 0.0f, 4.0f), at(0.0f, 0.0f, 0.0f), up(0.0f, 1.0f, 0.0f);
|
glm::vec3 eye(0.0f, 0.0f, 4.0f), at(0.0f, 0.0f, 0.0f), up(0.0f, 1.0f, 0.0f);
|
||||||
glm::mat4 mView = glm::lookAt(eye, at, up);
|
glm::mat4 mView = glm::lookAt(eye, at, up);
|
||||||
glm::mat4 mProjection = glm::perspective(45.0f, 1.0f, 2.0f, -2.0f);
|
glm::mat4 mProjection = glm::perspective(45.0f, 1.0f, -2.0f, 2.0f); //glm::perspective(45.0f, 1.0f, 2.0f, -2.0f);
|
||||||
bool wired = false;
|
bool wired = false;
|
||||||
|
|
||||||
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
|
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
|
||||||
@ -77,7 +77,7 @@ int main() {
|
|||||||
glDepthFunc(GL_LEQUAL);
|
glDepthFunc(GL_LEQUAL);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
AudioPlayer player("/Users/selim/Dropbox/euphoria.wav");
|
AudioPlayer player("/home/selim/dl/euphoria.wav");
|
||||||
player.setStreamListener([&mesh](void* data, std::size_t framesCount){
|
player.setStreamListener([&mesh](void* data, std::size_t framesCount){
|
||||||
mesh.addLine((float*)data);
|
mesh.addLine((float*)data);
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user