Заикание / мерцание эффекта на мой контекст OpenGLC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Заикание / мерцание эффекта на мой контекст OpenGL

Сообщение Anonymous »

У меня есть проблема, с OpenGL у меня есть этот нежелательный эффект, когда я изменяю размер своего окна. Можете ли вы помочь мне это исправить?
Я хочу сохранить размер пикселя моего рисунка, пока я изменяю размер своего окна, поэтому я использую матрицу орфографической проекции. Я попытался использовать многопоточное для разделения опроса событий и задачи рендеринга, но это не решает мою проблему ... Кроме того, я хочу использовать DSA и избежать старых трюков OpenGL. Код: < /p>
std::unique_ptr Instance;

void framebuffer_size_callback(GLFWwindow*, int width, int height)
{

glViewport(0, 0, width, height);

const glm::mat4 projectionMatrix = glm::ortho(
0.0f, static_cast(width),
0.0f, static_cast(height),
-1.0f, 1.0f
);

for (const auto& child: Instance->m_children)
{
child->m_shader.use();
child->m_shader.set("projectionMatrix", projectionMatrix);
}

glClear(GL_COLOR_BUFFER_BIT);
}
< /code>
std::expected Application::init()
{
if (!glfwInit()) { return std::unexpected("GLFW could not initialize"); }

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_DOUBLEBUFFER, GLFW_TRUE);
glfwWindowHint(GLFW_SAMPLES, 4);

m_window = glfwCreateWindow(700, 500, "Hello World!", nullptr, nullptr);
if (!m_window)
{
glfwTerminate();
return std::unexpected("Failed to create GLFW window");
}

glfwSetFramebufferSizeCallback(m_window, framebuffer_size_callback);

glfwMakeContextCurrent(m_window);

glfwSwapInterval(1);

if (!gladLoadGLLoader(reinterpret_cast(glfwGetProcAddress)))
{
return std::unexpected("Failed to initialize GLAD");
}
glEnable(GL_TEXTURE_2D);
glEnable(GL_MULTISAMPLE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glfwMakeContextCurrent(nullptr);

return {};
}
< /code>
int Application::run()
{
std::jthread renderThread(
[this]
{
glfwMakeContextCurrent(m_window);

begin();
framebuffer_size_callback(m_window, 700, 500);

while (m_running && !glfwWindowShouldClose(m_window))
{
glClearColor(
m_backgroundColor.r,
m_backgroundColor.g,
m_backgroundColor.b,
m_backgroundColor.a
);
glClear(GL_COLOR_BUFFER_BIT);

loop();

glfwSwapBuffers(m_window);
}
glfwMakeContextCurrent(nullptr);
}
);

while (!glfwWindowShouldClose(m_window))
{
glfwWaitEvents();

if (glfwWindowShouldClose(m_window)) { m_running = false; }
}

glfwDestroyWindow(m_window);
glfwTerminate();

return 42; //exit success :)
}
< /code>

//vertex shader hard-coded in C++

#version 460 core

layout (location = 0) in vec3 position;
layout (location = 1) in vec4 color;
out vec4 COLOR;
uniform mat4 modelMatrix = mat4(1.0);
uniform mat4 projectionMatrix;

void main() {
mat4 Matrix = projectionMatrix * modelMatrix;
gl_Position = Matrix * vec4(position, 1.0);
COLOR = color;
}
< /code>

Компилятор: GCC в Clion. < /li>
Библиотека: GLFW, GLAD и GLM < /li>
OS: Windows 11 < /li>
GPU: NVIDIA GEFORCE RTX 4050 < /li>
< /> < /ul> < /> < /ul> < /> < /> < /> < /> < /u отвечать ! :)


Подробнее здесь: https://stackoverflow.com/questions/796 ... gl-context
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Заикание / мерцание эффекта на мой контекст OpenGL
    Anonymous » » в форуме C++
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Заикание / мерцание эффекта на мой контекст OpenGL [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Пакетный рендеринг OpenGL, вызывающий мерцание на более слабых графических процессорах (2D-движок)?
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Заикание изображения в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Заикание при воспроизведении аудио с использованием NAudio и Opus только при прохождении через сеть
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»