提示コードですがカメラの視点を振と立方体がちらついてしまうのですがこれは何が原因なのでしょうか?
調べたこと
シェーダーコードを確認
カリング、深度バッファ等の設定を確認
参考サイト: https://www.fixes.pub/program/242324.html
VertexShader
/*######################################################################### # ###########################################################################*/ #version 420 //#extension GL_ARB_explicit_uniform_location : require layout(location = 0) in vec3 vertexPosition; //layout(location = 1) in vec2 vertexUV; //layout(location = 2) in vec3 vertexNormal; //layout(location = 3) out vec2 vUV; layout(location = 1) out vec4 vFragment; //layout(location = 4) out vec3 vNormal; uniform mat4 uTranslate; uniform mat4 uRotate; uniform mat4 uScale; uniform mat4 uViewProjection; uniform vec4 uFragment; void main() { vec4 vertex = vec4(vertexPosition,1.0); mat4 model = uTranslate * uRotate * uScale; gl_Position = (uViewProjection * model) * vertex; // vUV = vertexUV; vFragment = uFragment; // vNormal = vertexNormal; }
Fragment Shader
/*######################################################################### # ###########################################################################*/ #version 420 //#extension GL_ARB_explicit_uniform_location : require //layout(location = 3) in vec2 vUV; layout(location = 1) in vec4 vfragment; //layout(location = 4) in vec3 vNormal; //uniform sampler2D uImage; out vec4 fragment; void main() { fragment = vfragment; // fragment = texture(uImage,vUV); }
Init.cpp
#include "../header/Init.hpp" #include <GL/glew.h> #include <GLFW/glfw3.h> #include "../header/Window.hpp" #include "../header/Resource.hpp" namespace FrameWork { std::shared_ptr<FrameWork::Window> windowContext = 0; // ##################################### 初期化 ##################################### bool Init(glm::ivec2 size, glm::ivec2 ver, const char *title) { if (FT_Init_FreeType(&ft) != 0) { std::cerr << "FreeType を初期化出来ません。" << std::endl; assert(0); } setlocale(LC_CTYPE, ""); //ローカルを設定 if (glfwInit() == GL_FALSE) { std::cerr << "glfw初期化失敗。" << std::endl; return false; } windowContext = std::make_shared<Window>(size, title); //ウインドウコンテキストを生成 glEnable(GL_BLEND); //ブレンド有効 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //ブレンドを指定 glEnable(GL_TEXTURE_2D); //テクスチャを有効 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //ブレンドタイプ glEnable(GL_MULTISAMPLE); //MSAA glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE); //半透明 glEnable(GL_DEPTH_TEST); //深度バッファを有効 //glDepthFunc(GL_ALWAYS); //深度バッファのタイプ glEnable(GL_CULL_FACE); //カリングを有効 glCullFace(GL_BACK); //裏面を無効 //マウス移動 if (GLFW_NOT_INITIALIZED == glfwRawMouseMotionSupported()) { std::cerr << "GLFW_NOT_INITIALIZED" << std::endl; } // OpenGL Verison 4.5 Core Profile を選択する glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, ver.x); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, ver.y); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); atexit(glfwTerminate); //プログラム終了時の処理を登録 return true; } }
Main.cpp
//FrameWork::Camera::setLook(cameraLook); //FrameWork::Camera::setLook(glm::vec3(0,0,-1)); FrameWork::Camera::setLook(glm::vec3(cos(cameraLook.x) * cos(cameraLook.y), sin(cameraLook.y), sin(cameraLook.x) * cos(cameraLook.y))); FrameWork::Camera::setPosition(cameraPos);
あなたの回答
tips
プレビュー