「nvoglv64.pdbは読み込まれていません」 の解決方法

cpp

1#include <iostream>2#include <fstream>3#include <sstream>4#include <string>5#include <glad/glad/glad.h>6#include <glfw/glfw3.h>7#include <glm/gtc/matrix_transform.hpp>8#include <glm/gtc/type_ptr.hpp>9 10GLchar* LoadShaderFile(const char* fileName)11{12 if(fileName != NULL)13 {14 std::ifstream file(fileName, std::ios::binary);15 16 if (file.fail() == true)17 {18 std::cerr << "シェーダーファイルを読み込めません: " << fileName << std::endl;19 20 file.close();21 }22 else23 {24 GLchar *buffer;25 file.seekg(0L, std::ios::end);26 GLsizei length = static_cast<GLsizei>(file.tellg());27 buffer = new GLchar[length + 1];28 file.seekg(0L, std::ios::beg);29 file.read(buffer, length);30 buffer[length] = ('\0');31 32 file.close();33 34 return buffer;35 }36 37 file.close();38 39 }40 return NULL;41}42 43 44 45glm::mat4 createCameraMatrix(const glm::vec3& position, const glm::vec3& target, const glm::vec3& up) {46 return glm::lookAt(position, target, up);47}48 49glm::mat4 createTranslationMatrix(const glm::vec3& translation) {50 return glm::translate(glm::mat4(1.0f), translation);51}52 53glm::mat4 createScaleMatrix(const glm::vec3& scale) {54 return glm::scale(glm::mat4(1.0f), scale);55}56 57glm::mat4 createRotationMatrix(float angle, const glm::vec3& axis) {58 return glm::rotate(glm::mat4(1.0f), glm::radians(angle), axis);59}60 61std::string readShaderFile(const char* filePath) {62 std::ifstream file(filePath);63 std::stringstream buffer;64 if (file) {65 buffer << file.rdbuf();66 file.close();67 return buffer.str();68 } else {69 std::cerr << "Failed to open shader file: " << filePath << std::endl;70 return "";71 }72}73typedef struct Vertex {74 glm::vec3 position;75 glm::vec2 texCoords;76 glm::vec3 normal;77};78 79void framebuffer_size_callback(GLFWwindow* window, int width, int height) {80 glViewport(0, 0, width, height);81}82 83int main() {84 // GLFW の初期化85 if (!glfwInit()) {86 std::cout << "glfw" << std::endl;87 return -1;88 }89 90 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);91 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);92 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);93 94 // GLFW ウィンドウの作成95 GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL);96 if (window == NULL) 97 {98 99 std::cout << "window" << std::endl;100 glfwTerminate();101 return -1;102 }103 104 glfwMakeContextCurrent(window);105 106 // GLAD の初期化107 if (!gladLoadGL()) {108 109 std::cout << "glad" << std::endl;110 return -1;111 }112 113 //std::cout << "ddd "<< glGetError();114 // シェーダーのコンパイル115 116 117 Vertex vertices[3];118 119vertices[0] = Vertex{ {0, -0.5f,0}, {0.0f, 0.0f}, {0.0f, 0.0f, 0.0f} };120vertices[1] = Vertex{ { 0, 0.5f, 0}, {1.0f, 0.0f}, {0.0f, 0.0f, 0.0f} };121vertices[2] = Vertex{ { 0.5f,0,0}, {1.0f, 0.0f}, {0.0f, 0.0f, 0.0f} };122 123 unsigned int vertexShader;124 unsigned int fragmentShader;125 126 127 vertexShader = glCreateShader(GL_VERTEX_SHADER);128 129 std::cout << "eeee" << std::endl;130 131 std::cout << "ddd "<< glGetError();132 133 134 const GLchar* const* vertexShaderSource = (const GLchar* const*)LoadShaderFile("vertex.glsl");135 const GLchar* const* fragmentShaderSource = (const GLchar* const*)LoadShaderFile("fragment.glsl");136 ///////////////////////////////////////////////////////////////////////137 glShaderSource(vertexShader, 1,vertexShaderSource, NULL);138 //////////////////////////////////////////////////////////////////////139 std::cout << "ddd "<< glGetError();140 std::cout << "22222" << std::endl;141 glCompileShader(vertexShader);142 143 fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);144 glShaderSource(fragmentShader, 1, fragmentShaderSource, NULL);145 glCompileShader(fragmentShader);146 147 unsigned int shaderProgram;148 shaderProgram = glCreateProgram();149 glAttachShader(shaderProgram, vertexShader);150 glAttachShader(shaderProgram, fragmentShader);151 glLinkProgram(shaderProgram);152 153 154 155glm::vec3 cameraPosition(0.0f, 0.0f, 3.0f);156glm::vec3 cameraTarget(0.0f, 0.0f, 0.0f);157glm::vec3 cameraUp(0.0f, 1.0f, 0.0f);158glm::mat4 viewMatrix = createCameraMatrix(cameraPosition, cameraTarget, cameraUp);159 160glm::mat4 move = createTranslationMatrix(glm::vec3(0,0,-20));161glm::mat4 scale = createScaleMatrix(glm::vec3(1,1,1));162glm::mat4 rotate = createRotationMatrix(0,glm::vec3(1,1,1));163 164 165 166std::cout << "1111" << std::endl;167 168 unsigned int VAO, VBO, EBO;169 170 glGenVertexArrays(1, &VAO);171 glGenBuffers(1, &VBO);172 // glGenBuffers(1, &EBO);173 174 glBindVertexArray(VAO);175 glBindBuffer(GL_ARRAY_BUFFER, VBO);176 177 glBufferData(GL_ARRAY_BUFFER, 3 * sizeof(Vertex), vertices, GL_STATIC_DRAW);178/* 179 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); 180 glBufferData(GL_ELEMENT_ARRAY_BUFFER, 36 * sizeof(unsigned int), indices, GL_STATIC_DRAW); 181*/182 // 頂点位置属性183 glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)0);184 glEnableVertexAttribArray(0);185 186 // UV座標属性187 glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)(offsetof(Vertex, texCoords)));188 glEnableVertexAttribArray(1);189 190 // 法線属性191 glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)(offsetof(Vertex, normal)));192 glEnableVertexAttribArray(2);193 194 glBindVertexArray(0);195 196std::cout << "222" << std::endl;197 // フレームバッファサイズの変更時のコールバック関数を設定198 glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);199 200 201 202 //std::cout << "aaa" << std::endl;203 // メインループ204 while (!glfwWindowShouldClose(window)) {205 // フレームバッファのクリア206 glClearColor(0.2f, 0.2f, 0.2f, 1.0f);207 glClear(GL_COLOR_BUFFER_BIT);208 209 210 211 glBindVertexArray(VAO);212 213 glBindBuffer(GL_ARRAY_BUFFER, VBO);214 215 glUseProgram(shaderProgram);216 217 218 // std::cout << "aaaa" << std::endl;219 GLint uniformLocation = glGetUniformLocation(shaderProgram, "uFragment");220 //std::cout << "dddd" << std::endl;221 glUniform4f(uniformLocation,0,1,0,1);222 223 uniformLocation = glGetUniformLocation(shaderProgram,"uTranslate");224 glUniformMatrix4fv(uniformLocation,1,false,glm::value_ptr(move));225 226 227 228 uniformLocation = glGetUniformLocation(shaderProgram,"uRotate");229 glUniformMatrix4fv(uniformLocation,1,false,glm::value_ptr(rotate));230 231 232 uniformLocation = glGetUniformLocation(shaderProgram,"uScale");233 glUniformMatrix4fv(uniformLocation,1,false,glm::value_ptr(scale));234 235 236 uniformLocation = glGetUniformLocation(shaderProgram,"uViewProjection");237 glUniformMatrix4fv(uniformLocation,1,false,glm::value_ptr(viewMatrix));238 239 240 241 242 // 三角形の描画243 glDrawArrays(GL_TRIANGLES, 0,3);244 245 // glDrawElements(GL_TRIANGLES,36,GL_UNSIGNED_INT,indices);246 247 // 画面の更新248 glfwSwapBuffers(window);249 glfwPollEvents();250 }251 252 // GLFW の終了253 glfwTerminate();254 255 return 0;256}257

コメントを投稿

0 コメント