Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2

Зависает при открытии!? (glfw3)

21.10.2019, 10:17. Показов 2355. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <GL/glu.h>
#include <GLFW/glfw3.h>
 
    GLFWwindow * wh;
 
int main(void)
{
    int width, height;
    int frame = 0;
    bool running = true;
    const char* cchtitle = "glfw3";
 
    if (!glfwInit()) {return -1;}
  //  glfwWindowHint(GLFW_SAMPLES, 4); //установка количества образцов для просчета сглаживания буфера
    wh=glfwCreateWindow(800,600,cchtitle,NULL,NULL);
   // if(wh==NULL) // открытие окна с нужными параметрами
  //  {
  //      std::cout<<"error!";
  //      glfwTerminate(); //освобождает ресурсы и закрывает окно
  //      return 0;
   // }
 //   glfwSetWindowTitle("Сглаживание"); //заголовок окна
    while(running) //главный цикл приложения MainLoop
    {
        if(glfwGetKey(wh,GLFW_KEY_RIGHT)) frame++;
        if(glfwGetKey(wh,GLFW_KEY_LEFT)) frame--;
        glfwGetWindowSize(wh,&width, &height); //получение размеров окна
        height = height > 0 ? height : 1; // защита от деления на ноль
        glViewport(0,0,width,height); // установка области просмотра
        glClearColor(0.1f,0.2f,0.5f,0.0f); //установка цвета очистки
        glClear(GL_COLOR_BUFFER_BIT); // чистим буфер
        glMatrixMode(GL_PROJECTION); //ставим текущей матрицу проектирования
        glLoadIdentity(); //загрузка единичной матрицы
        gluPerspective(65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f);
        glMatrixMode(GL_MODELVIEW); //ставим текущей модельную матрицу
        glLoadIdentity(); //загрузка единичной матрицы
        gluLookAt(0.0f,-10.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,1.0f);
        glRotatef(frame, 0.25f, 1.0f, 0.75f); //поворачиваем модельную матрицу
        glBegin(GL_QUADS); //рисуем четырехугольник
        glColor3f(1.0f,0.0f,0.0f); // цвет рисования
        glVertex3f(0.0f,0.0f,-4.0f);
        glColor3f(1.0f,0.0f,0.0f); // цвет рисования
        glVertex3f(-1.0f,-2.0f,-4.0f);
        glColor3f(1.0f,0.0f,0.0f); // цвет рисования
        glVertex3f(3.0f,-2.0f,-4.0f);
        glColor3f(1.0f,0.0f,0.0f); // цвет рисования
        glVertex3f(3.0f,0.0f,-4.0f);
        glEnd();
        glfwSwapBuffers(wh); //меняем буферы местами
        //выход из цикла при нажатии esc или при закрытии окна
       // running = !glfwGetKey(wh,GLFW_KEY_ESCAPE)&& glfwGetWindowAttrib(wh, GLFW_FOCUSED);
    }
    glfwTerminate();
    return 0;
}
зависает при открытии !?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2019, 10:17
Ответы с готовыми решениями:

Линковщик C++ и GLFW3
Использую: 1.Среда - wxDev-C++ 2.Компилятор - MinGW Проблема: 1. Линковщик жалуется на то что не может банально найти...

GlfwSwapBuffers работает неадекватно медленно. (win64, glew, glfw3)
glfwSwapBuffers работает 15ms, что явно какой-то бред. Весть рендер занимает 5ms, а смена буферов 15? Что не так? На скрине видно время...

Зависает при открытии файла
При попытке открыть файл с расширением &quot;.RIFF&quot; , он намертво зависает

4
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
21.10.2019, 11:08
Лучший ответ Сообщение было отмечено qppq как решение

Решение

Цитата Сообщение от qppq Посмотреть сообщение
C++
1
GLFWwindow * wh;
Смысл делать глобальную переменную если ты все вставил в main?
Цитата Сообщение от qppq Посмотреть сообщение
C++
1
glViewport(0,0,width,height); // установка области просмотра
Цитата Сообщение от qppq Посмотреть сообщение
C++
1
2
3
4
5
6
glMatrixMode(GL_PROJECTION); //ставим текущей матрицу проектирования
 glLoadIdentity(); //загрузка единичной матрицы
gluPerspective(65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f);
glMatrixMode(GL_MODELVIEW); //ставим текущей модельную матрицу
glLoadIdentity(); //загрузка единичной матрицы
 gluLookAt(0.0f,-10.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,1.0f);
так же обязательно каждый раз устанавливать одно и тоже не изменяя ?

Добавлено через 23 минуты
https://www.glfw.org/docs/latest/quick.html
прочитай все хорошенько ага
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <glad/glad.c>
#include <GLFW/glfw3.h>
#include <windows.h>
#include <GL/glu.h>
#include <iostream>
 
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);
void error_callback(int error, const char* description);
// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
 
 
 
 
int main()
{
    // glfw: initialize and configure
    // ------------------------------
    //glfwInit();
    if (! glfwInit ())
    {
        std::cout<<"Error init glfw\n";
    }
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
    //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwSetErrorCallback (error_callback);
#ifdef __APPLE__
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // uncomment this statement to fix compilation on OS X
#endif
 
    // glfw window creation
    // --------------------
    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
 
    // glad: load all OpenGL function pointers
    // ---------------------------------------
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }
 
 
 
 
    int width, height;
    glfwGetWindowSize(window,&width, &height); //получение размеров окна
        height = height > 0 ? height : 1; // защита от деления на ноль
 
            glMatrixMode(GL_PROJECTION); //ставим текущей матрицу проектирования
        glLoadIdentity(); //загрузка единичной матрицы
        gluPerspective(65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f);
        glMatrixMode(GL_MODELVIEW); //ставим текущей модельную матрицу
        glLoadIdentity(); //загрузка единичной матрицы
        gluLookAt(0.0f,-10.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,1.0f);
    // render loop
    // -----------
    while (!glfwWindowShouldClose(window))
    {
        // input
        // -----
        processInput(window);
 
        // render
        // ------
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_QUADS); //рисуем четырехугольник
        glColor3f(1.0f,0.0f,0.0f); // цвет рисования
        glVertex3f(0.0f,0.0f,-4.0f);
        glColor3f(1.0f,0.0f,0.0f); // цвет рисования
        glVertex3f(-1.0f,-2.0f,-4.0f);
        glColor3f(1.0f,0.0f,0.0f); // цвет рисования
        glVertex3f(3.0f,-2.0f,-4.0f);
        glColor3f(1.0f,0.0f,0.0f); // цвет рисования
        glVertex3f(3.0f,0.0f,-4.0f);
        glEnd();
 
        // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
        // -------------------------------------------------------------------------------*/
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
 
 
    // glfw: terminate, clearing all previously allocated GLFW resources.
    // ------------------------------------------------------------------
    glfwTerminate();
    std::cin.get();
    return 0;
}
 
// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly
// ---------------------------------------------------------------------------------------------------------
void processInput(GLFWwindow *window)
{
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}
 
// glfw: whenever the window size changed (by OS or user resize) this callback function executes
// ---------------------------------------------------------------------------------------------
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    // make sure the viewport matches the new window dimensions; note that width and
    // height will be significantly larger than specified on retina displays.
    glViewport(0, 0, width, height);
}
 
void error_callback(int error, const char* description)
{
    fprintf(stderr, "Error: %s\n", description);
}
2
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
21.10.2019, 11:11
Указывай версию Opengl
Миниатюры
Зависает при открытии!? (glfw3)  
0
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
21.10.2019, 12:37  [ТС]
что это?:
C++
1
#include <glad/glad.c>
Добавлено через 2 минуты
C++
1
2
3
4
void error_callback(int error, const char* description)
{
    fprintf(stderr, "Error: %s\n", description);
}
тут видимо ошибку в файл пишет, закомментировал, чегойто там не хватает

Добавлено через 8 минут
C++
1
2
3
4
5
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }
похоже на загрузчик указателей на функции, тоже закомментировал, наерное работает с glad.c
таки открылось окошко

Добавлено через 19 минут
Цитата Сообщение от Antikl Посмотреть сообщение
Указывай версию Opengl
вы про это:
C++
1
2
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
2 0 - норм
3 0 - норм
3 3 - окно есть квадрата нет
4 0 - не запустилось статус -1
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
21.10.2019, 21:36
Цитата Сообщение от qppq Посмотреть сообщение
C++
1
#include <glad/glad.c>
Цитата Сообщение от qppq Посмотреть сообщение
C++
1
2
3
4
5
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
 std::cout << "Failed to initialize GLAD" << std::endl;
 return -1;
 }
загрузчик расширений

еще после версии 3_2 или 3_0 используй
C++
1
[CPP]glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
[/CPP]
до этих версий будет ошибку выбивать


GLFW_OPENGL_PROFILE указывает, для какого профиля OpenGL создать контекст.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.10.2019, 21:36
Помогаю со студенческими работами здесь

Зависает при открытии приложений
Добрый день. Очень надеюсь на вашу помощь. При работе ноутбук работает очень медленно. А также периодически зависает. Проверял...

Ворд зависает при открытии
При открытии Ворда, курсор начинает очень быстро меняться из стрелочки в песочные часы, и жутко виснет, только в ворде так, больше нигде.

Зависает намертво при открытии файла
Всем привет! Есть проблема, при открытии файла в AutoCAD 2017, софт зависает и память грузится до 100%, пробовали пересохранять файл...

Зависает комп при открытии картинок
Был Windows 7,на серверах в cs начинало жутко лагать,перебил на XP ,сохранил картинку ,а запустить,удалить,зайти в свойства или перемистить...

Зависает сервер при открытии проводника
Всех приветствую! Прошу помощи опытных сисадминов :-) Есть сервер в учреждении, на котором стоит программа по типу &quot;Консультант...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru