|
1 / 1 / 0
Регистрация: 27.02.2010
Сообщений: 190
|
|||||||||||
Пример в C++06.12.2012, 17:08. Показов 5194. Ответов 16
Решил изучить OpenGL более тщательно, так сказать с самого начала, чтобы лучше понимать то, что буду учить дальше. Но OpenGL я понимаю очень плохо. Нашел простой пример:
Сразу видимо срабатывает main автоматом glutInit(&argc, argv); - Зачем эта строка я так и не понял, ведь по сути в main ничего не передается. Я даже не понял, зачем в функции main параметры. Как я понял, main запускается автоматически и в данном случае без параметров
Зачем так писать? Почему бы просто не вызвать ее, как вызывается Initialize();? Подскажите пожалуйста...
0
|
|||||||||||
| 06.12.2012, 17:08 | |
|
Ответы с готовыми решениями:
16
Пример vgl.h
Ищу пример |
|
85 / 85 / 1
Регистрация: 16.10.2012
Сообщений: 304
|
|
| 06.12.2012, 20:26 | |
|
glutInit(&argc, argv); Проводит инициализацию контекста OpenGL, лучше не думать как это происходит
Просто вызывать и не задумываться...glutDisplayFunc Принимает в качестве параметра функцию, которая будет вызыватся каждый раз, при перерисовке графики. Вместо Draw может быть любая функция, с любым именем...
0
|
|
|
1 / 1 / 0
Регистрация: 27.02.2010
Сообщений: 190
|
|
| 06.12.2012, 23:49 [ТС] | |
|
Когда будет срабатывать эта перерисовка? Мне вообще говорили, что glutDisplayFunc(Draw); добавляет функцию Draw куда-то, а после этого с помощью строки glutMainLoop(); -функция Draw выполняется непрерывно, пока не закроется окно. Это верно?
0
|
|
|
85 / 85 / 1
Регистрация: 16.10.2012
Сообщений: 304
|
|
| 07.12.2012, 05:25 | |
|
В какой-то мере да, но ведь программа работает в оконной среде... И когда окно свёрнуто или не активно, то перерисовка не нужна...
glutMainLoop(); запускает основной цикл программы, по сути внутри есть вызов функции Draw.
0
|
|
|
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
|
||||
| 07.12.2012, 07:03 | ||||
Добавлено через 12 минут
Сообщение между ядром (kernel) Windows и программой осуществляется посредством сообщений ( messages). У прораммы для windows существует очередь сообщений (message queue), в которой указаны параметры wparam и lparam. Обработкой сообщений в программе занимается оконная процедура, которую не программа вызывает, а которую вызывает сама операционная система. То есть это CALLBACK функция ( функция обратного вызова). Эту функцию нельзя вызвать напрямую, так как вызовов занимается ядро операционной системы. Подробно у Петцолда в книге Programming Windows. Сообщения это например оповещение о закрытии окна ( WM_DESTROY), о создании окна ( WM_CREATE), об изменении размеров ( WM_SIZE), об отрисовке ( WM_PAINT) и т.п. Таким образом функцию отображения для OpenGL вызывает ядро Windows. А управление оконной процесдурой берет на себя OpenGL, то есть в нем должна присутсвовать цикл получения сообщений функциями GetMessage, TranslateMessage, DispatchMessage. и OpenGL вызывает функцию отображения, в данном случае Draw, при передаче ядром системы управления программе. Добавлено через 5 минут Вот названия книг: - Solomon, David; Russinovich, Mark (September 16, 2000). Inside Microsoft Windows 2000 (Third ed.). Microsoft Press. - Russinovich, Mark; Solomon, David (December 8, 2004). Microsoft Windows Internals (Fourth ed.). Microsoft Press. Russinovich, Mark; Solomon, David; Ionescu, Alex (June 17, 2009). Microsoft Windows Internals (Fifth ed.). - Jeffrey Richter - Advanced Windows Third Edition (February 1997) Charles Petzold - Programming Windows, 4th edition (Microsoft Press, 1996)
0
|
||||
|
1 / 1 / 0
Регистрация: 27.02.2010
Сообщений: 190
|
|
| 07.12.2012, 12:31 [ТС] | |
|
На счет перерисовки: В MFC у меня уже реализована перерисовка, возможно мне не нужно использовать
glutMainLoop(); Раньше я обходился и без этого, при изменении окна все работало нормально. Вот у меня есть проблема: В этом первом уроке описывается пример, в котором есть функция main c необходимыми параметрами, которая вызывается автоматически при запуске программы. А как быть, если я делаю в шаблоне MFC? У меня функция, которая имеет такой же код, как main, должна выполнятся при нажатии на какую-то кнопку. То есть не при запуске программы, а в необходимый момент. По скольку я явно не вижу, какие там параметры передаются в main и т.д. я не могу сделать запуск программы без main. Допустим я в свою функцию CPicture::OnShowPicture() , которая срабатывает при нажатии кнопки, запишу схожий с функцией main код. В таком случае glutInit(&argc, argv); не примет параметры. Как быть?
0
|
|
|
85 / 85 / 1
Регистрация: 16.10.2012
Сообщений: 304
|
||
| 07.12.2012, 12:40 | ||
|
И я должен разбираться, что там внутри происходит? На кой тогда вообще нужны библиотеки, для инициализации OpenGL? Нет, лучше не лезть туда, куда мне не надо, а делать то что интересно или требуется... И причём тут Windows и его ядро? Ведь GLUT можно использовать не только под Windows, есть кстати альтернатива freeGLUT. Короче я не совсем согласен....
0
|
||
|
1 / 1 / 0
Регистрация: 27.02.2010
Сообщений: 190
|
||||||
| 07.12.2012, 22:05 [ТС] | ||||||
error LNK2019: unresolved external symbol "public: static void __cdecl CSphereView: raw(void)" (?Draw@CSphereView@@SAXXZ) referenced in function "public: void __thiscall CSphereView::OnButtonClick(void)" (?OnButtonClick@CSphereView@@QAEXXZ)error LNK1120: 1 unresolved externals В чем ошибка?
0
|
||||||
| 08.12.2012, 14:52 | |||
И display не может быть "любой" функцией, а лишь функцией с правильной сигнатурой.
0
|
|||
|
85 / 85 / 1
Регистрация: 16.10.2012
Сообщений: 304
|
||
| 08.12.2012, 15:51 | ||
|
Тут скорее архитектура ОС, чем основы С++?
0
|
||
| 08.12.2012, 20:10 | |
|
Человек не понимает, откуда вызывается функция main и как ей передаются параметры, не понимает, зачем glutDisplayFunc принимает функцию в виде параметра. Тут нужно сначала с языком разбираться, хотя бы в общих чертах, понять что такое указатель на функцию и прочая.
0
|
|
|
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 4
|
||||||
| 11.12.2012, 01:09 | ||||||
использую DEVC++ 4.9.9.2, ошибки" 1. L/glut.h: No such file or directory. " 2. n function `int main(int, char**)': 3. lutInit' undeclared (first use this function) пробовал glutInit(&__argc, __argv);добавляется ошибка argc' undeclared (first use this function) в Microsoft Visual C++ 6.0 вышеприведенный код так же ведет к ошибке "fatal error C1010: unexpected end of file while looking for precompiled header directive" и указывает на строку кода, точнее на строку ниже последних закрывающих скобок. в каталоге C:\Dev-Cpp\lib имеются библиотеки "своей" упаковки, в частности libglut32.a там же libgl.a, с ней, библиотекой, пример из каталога SAMPLE работает. мне бы настроить DEV или MVC++ на работу с glut.h.
0
|
||||||
|
85 / 85 / 1
Регистрация: 16.10.2012
Сообщений: 304
|
|
| 11.12.2012, 10:41 | |
|
Файл glut.h не находит. В первом случае.
Настроить помочь не могу, нет этих IDE по линуксом...
1
|
|
|
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 4
|
|||
| 12.12.2012, 00:21 | |||
|
может еще и glut не глут. поищу другой. автор уроков по OpenGL(многие с таким же столкнулись) рекомендовал в папку проекта помещать.
Добавлено через 1 час 19 минут ps прояснилось с DEVpp, его пока пытаюсь запустить. пока dll ка не нужна. нужен хедер glut.h. его у авторов на сайте нашел, но в нем нет функций которые в уроке применяются. но в его теле еще два файла подключаются.... если связи все прослеживать, жизни не хватит. вот так и учись, то сего нет, то другое отсутствует
0
|
|||
|
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 4
|
||
| 12.12.2012, 23:31 | ||
|
там нет как настраивать дев и второе, нужно сразу начинать программы составлять, смотреть чужие. без этого книга ничто. не моя вина, что редакторы не настроены. я не кодер, я программист. и мне cpp, только на реализацию одной задачи нужен. не нужно здесь речей о повышении уровня знаний.
0
|
||
| 12.12.2012, 23:41 | |
|
Ну как знаешь
0
|
|
| 12.12.2012, 23:41 | |
|
Помогаю со студенческими работами здесь
17
Простейший пример с OpenGL (C++) Пример файла из 3dmax Простейший пример с комментариями Простой пример OpenGL Пример использования VAO + VBO Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|