![]() |
|
![]() ![]() ![]() |
|
math64 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
пробую сохранить так
или так
в обоих случаях программа вылетает. Не могу понять почему. (рисуется кубик из примера Textures) |
||||
|
|||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Из какого места вызываешь?
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Из слота saveAction, после получения имени файла через QFileDialog.
Ну и в примерах texture и grabber есть анимация - у меня её нет. Это сообщение отредактировал(а) math64 - 7.9.2015, 08:06 |
|||
|
||||
math64 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Вот так:
GLWidget.cpp:
|
||||
|
|||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Посмотри отладчиком в каком именно месте падает. Надеюсь исходники Qt стоят?
Хоть у тебя падет и там и там, но вместо renderPixmap надежнее использовать grabFrameBuffer, т.к. последний сводится фактически к вызову glReadPixels. А renderPixmap будет повторно вызывать initializeGL(), что в твоем случае возможно и приводит к некоторым проблемам. Например пересозданию текстур, заполнению texCoords и vertices без предварительной очистки. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
В Windows у меня отладчик не работает - не знаю почему, когда в первый раз ставил Qt, работал.
В Linux валится на d->glcx->doneCurrent(); в QPixmap QGLWidget::renderPixmap(int w, int h, bool useContext) или на d->glcx->makeCurrent(); в void QGLWidget::makeCurrent() из QImage QGLWidget::grabFrameBuffer(bool withAlpha) при этом на консоль валится can't find linker symbol for virtual table for `QGLWidget' value found `QGLContext::bindTexture(QString const&)' instead |
|||
|
||||
math64 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Была глупая ошибка.
в MainWindow::MainWindow(QWidget *parent) вместо
было
|
||||
|
|||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Дополнительно: Как сохранить с прозрачным фоном?
|
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Последний аргумент glClearColor должен быть 0, и grabFrameBuffer(true)
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Не получается. На всякий случай проверяю на наличие прозрачных пикселей:
QSize(209, 224) false |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Приложи лучше минимальный проект.
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
В конструкторе нужно добавить формат QGL::AlphaChannel:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |