Guest User

Untitled

a guest
Oct 16th, 2023
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. #include "include/glad/glad.h"
  2. #include "GLFW/glfw3.h"
  3. #include "canned_glfw_window.hpp"
  4. #include <ios>
  5. #include <iostream>
  6. #include <exception>
  7. #include <stdexcept>
  8. #include <string_view>
  9. #include <string>
  10. #include <fstream>
  11.  
  12. int GLFWWindow::viewport_x = 0;
  13. int GLFWWindow::viewport_y = 0;
  14.  
  15.  
  16. void error_callback(int err_code, const char *err_msg) {
  17. throw GLFWInitFailed(err_code, err_msg);
  18. }
  19.  
  20.  
  21. void framebuffer_size_callback(GLFWwindow *window, int width, int height) {
  22. glViewport(GLFWWindow::viewport_x, GLFWWindow::viewport_y, width, height);
  23. }
  24.  
  25.  
  26. GLFWWindow::GLFWWindow(size_t width, size_t height, const char *title, GLFWmonitor *monitor, GLFWwindow *share,
  27. int version_major, int version_minor, int profile) {
  28. glfwSetErrorCallback(error_callback);
  29. glfwInit();
  30. glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, version_major);
  31. glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, version_minor);
  32.  
  33. if (profile != 0)
  34. glfwWindowHint(GLFW_OPENGL_PROFILE, profile);
  35.  
  36. window = glfwCreateWindow(width, height, title, monitor, share);
  37. glfwMakeContextCurrent(window);
  38.  
  39. if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
  40. throw GLFWInitFailed(00000, "Failed to initialize GLAD");
  41. }
  42. }
  43.  
  44.  
  45. GLShader::GLShader(const std::string &file_location, GLenum shader_type) {
  46. std::ifstream file(file_location);
  47. std::string shader_src;
  48. std::string line;
  49.  
  50. if (file.bad())
  51. throw std::runtime_error("Shader file not found or unaccesible");
  52.  
  53. while (std::getline(file, line)){
  54. shader_src += line + "\n";
  55. }
  56.  
  57. const char *c_shader_src = shader_src.c_str();
  58. shader_id = glCreateShader(shader_type);
  59. glShaderSource(shader_id, 1, &c_shader_src, NULL);
  60. glCompileShader(shader_id);
  61. glGetShaderiv(shader_id, GL_COMPILE_STATUS,&compile_status);
  62. }
  63.  
  64.  
  65. GL2DTexture::GL2DTexture(GLint wrap_s, GLint wrap_t, GLint min_filter, GLint mag_filter,
  66. GLenum target, GLint level, GLint internal_format, size_t width, size_t height,
  67. GLint border, GLenum format, GLenum type, const void *data) noexcept : target(target) {
  68. glGenTextures(1, &texture_id);
  69. glBindTexture(target, texture_id);
  70.  
  71. glTexParameteri(target, GL_TEXTURE_WRAP_S, wrap_s);
  72. glTexParameteri(target, GL_TEXTURE_WRAP_T, wrap_t);
  73. glTexParameteri(target, GL_TEXTURE_MIN_FILTER, min_filter);
  74. glTexParameteri(target, GL_TEXTURE_MAG_FILTER, mag_filter);
  75.  
  76. glTexImage2D(target, level, internal_format, width, height, border, format, type, data);
  77. glGenerateMipmap(target);
  78. }
Advertisement
Add Comment
Please, Sign In to add comment