MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 01 мар 2012, 15:44

Что имеем: нарисованный с помощью OpenGL сегмент земного шара с текстурой (*.bmp). Отображается в окне виджета Qt.
Необходимо: добавить в качестве текстуры растровое изображение GeoTiff (*.tif, в дальнейшем с ним будет вестись работа).
Я выбрал библиотеку GDAL/ORG. Скачал с официального сайта исходники. Собрал. Подключил библиотеку.
Проблема: во время инициализации, а конкретнее после выполнения

Код: Выделить всё

GDALRegister_GTiff();
показывает ошибку

Код: Выделить всё

Unhandled exception at 0x0068d04c in myproj.exe: 0xC0000005: Access violation reading location 0x0000000f.
И вообще, эта библиотека весьма специфична. Подскажите, как решить данную проблему, или подскажите лучший способ использования GeoTiff в качестве текстуры с помощью указанного выше инструментария.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение Voltron » 01 мар 2012, 16:22

Чем это она специфична? Нормальная библиотека. В отладчике посмотрите что происходит

count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 02 мар 2012, 11:04

У меня нету опыта работы в данной области. Вот что выводит во время debug:
Спойлер
‘myproj.exe’: Loaded 'D:\proj_dir\bin\myproj.exe', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ntdll.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\kernel32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\KernelBase.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\bin\QtCored4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\user32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\gdi32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\lpk.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\usp10.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\msvcrt.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ole32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\rpcrt4.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\advapi32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\sechost.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ws2_32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\nsi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.762_none_24c8a196583ff03b\msvcp80d.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.762_none_24c8a196583ff03b\msvcr80d.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\bin\QtGuid4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\comdlg32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\shlwapi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\comctl32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\shell32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\oleaut32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\imm32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\msctf.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\winmm.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\winspool.drv', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\opengl32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\glu32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ddraw.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\dciman32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\setupapi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\cfgmgr32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\devobj.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\dwmapi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5\msvcr80.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\bin\QtOpenGLd4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\bin\QtXmld4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\uxtheme.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\cryptbase.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\version.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\secur32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\sspicli.dll', No symbols loaded.
‘myproj.exe’: Unloaded 'C:\Windows\System32\secur32.dll'
‘myproj.exe’: Unloaded 'C:\Windows\System32\sspicli.dll'
‘myproj.exe’: Unloaded 'C:\Windows\System32\version.dll'
‘myproj.exe’: Loaded 'C:\Windows\System32\userenv.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\profapi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\clbcatq.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\propsys.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ntmarta.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\Wldap32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\apphelp.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\shdocvw.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Program Files\Common Files\microsoft shared\ink\tiptsf.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ExplorerFrame.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\duser.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\dui70.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\WindowsCodecs.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\EhStorShell.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\cscui.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\cscdll.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\cscapi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ntshrui.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\srvcli.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\slc.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\xmllite.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\msftedit.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\msls31.dll', No symbols loaded.
‘myproj.exe’: Unloaded 'C:\Windows\System32\xmllite.dll'
‘myproj.exe’: Loaded 'C:\Windows\System32\xmllite.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\cryptsp.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\rsaenh.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\RpcRtRemote.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\StructuredQuery.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\secur32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\sspicli.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\actxprxy.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Program Files\Network Assistant\hooks.dll', Binary was not built with debug information.
‘myproj.exe’: Loaded 'C:\Program Files\Internet Explorer\ieproxy.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\thumbcache.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\psapi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ieframe.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\oleacc.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\iertutil.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\SearchFolder.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\networkexplorer.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\linkinfo.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\zipfldr.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\wkscli.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\netutils.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\networkitemfactory.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\dtsh.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\FirewallAPI.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\version.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\mpr.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\drprov.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\winsta.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ntlanman.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\davclnt.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\davhlpr.dll', No symbols loaded.
First-chance exception at 0x751e9617 in myproj.exe: 0x000006BA: Сервер RPC недоступен.
‘myproj.exe’: Loaded 'C:\Windows\System32\wpdshext.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\GdiPlus.dll', No symbols loaded.
‘myproj.exe’: Unloaded 'C:\Windows\System32\msftedit.dll'
‘myproj.exe’: Loaded 'C:\Windows\System32\PortableDeviceApi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\wintrust.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\crypt32.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\msasn1.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\wbem\wbemprox.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\wbemcomn.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\audiodev.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\WMVCORE.DLL', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\WMASF.DLL', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\wbem\wbemsvc.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\wbem\fastprox.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\ntdsapi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\EhStorAPI.dll', No symbols loaded.
The thread 'Win32 Thread' (0x146c) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x860) has exited with code 0 (0x0).
‘myproj.exe’: Loaded 'C:\Windows\System32\npmproxy.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\fundisc.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\atl.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\msxml6.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\fdProxy.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\fdWCN.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\WcnApi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\fdWNet.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\IPHLPAPI.DLL', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\winnsi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\dfscli.dll', No symbols loaded.
First-chance exception at 0x751e9617 in myproj.exe: 0x000006BA: Сервер RPC недоступен.
‘myproj.exe’: Loaded 'C:\Windows\System32\browcli.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\mswsock.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\WSHTCPIP.DLL', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\wship6.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\dnsapi.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Program Files\Bonjour\mdnsNSP.dll', No symbols loaded.
The thread 'Win32 Thread' (0xa14) has exited with code 0 (0x0).
‘myproj.exe’: Loaded 'C:\Windows\System32\rasadhlp.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\FWPUCLNT.DLL', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\dhcpcsvc6.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Windows\System32\dhcpcsvc.dll', No symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\plugins\imageformats\qgifd4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\plugins\imageformats\qicod4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\plugins\imageformats\qjpegd4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\plugins\imageformats\qmngd4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\plugins\imageformats\qsvgd4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\bin\QtSvgd4.dll', Symbols loaded.
‘myproj.exe’: Loaded 'C:\Qt\4.4.3\plugins\imageformats\qtiffd4.dll', Symbols loaded.
‘myproj.exe’: Unloaded 'C:\Windows\System32\audiodev.dll'
‘myproj.exe’: Unloaded 'C:\Windows\System32\WMVCORE.DLL'
‘myproj.exe’: Unloaded 'C:\Windows\System32\WMASF.DLL'
‘myproj.exe’: Unloaded 'C:\Windows\System32\wpdshext.dll'
‘myproj.exe’: Unloaded 'C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\GdiPlus.dll'
‘myproj.exe’: Loaded 'C:\Windows\System32\nvoglv32.dll', No symbols loaded.
The thread 'Win32 Thread' (0x1360) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0xc5c) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1704) has exited with code 0 (0x0).
First-chance exception at 0x0068d04c in myproj.exe: 0xC0000005: Access violation reading location 0x0000000f.
Unhandled exception at 0x0068d04c in myproj.exe: 0xC0000005: Access violation reading location 0x0000000f.
Вот что было в Call Stack:
Спойлер
> > myproj.exe!CSLFindString(char * * papszList=0x0000000f, const char * pszTarget=0x00a82ed7) Line 658 + 0x18 bytes
myproj.exe!GDALMultiDomainMetadata::SetMetadataItem() + 0x1a bytes
myproj.exe!_GDALRegister_GTiff() + 0x30d bytes
myproj.exe!GLQuad::initializeGL() Line 93
QtOpenGLd4.dll!QGLWidget::glInit() Line 3299
QtOpenGLd4.dll!QGLWidget::resizeEvent(QResizeEvent * __formal=0x0012b7f8) Line 1327
QtGuid4.dll!QWidget::event(QEvent * event=0x0012b7f8) Line 7310
QtOpenGLd4.dll!QGLWidget::event(QEvent * e=0x0012b7f8) Line 3087
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06fa4d78, QEvent * e=0x0012b7f8) Line 3803 + 0x11 bytes
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06fa4d78, QEvent * e=0x0012b7f8) Line 3768 + 0x10 bytes
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06fa4d78, QEvent * event=0x0012b7f8) Line 587 + 0x15 bytes
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06fa4d78, QEvent * event=0x0012b7f8) Line 209 + 0x39 bytes
QtGuid4.dll!QWidgetPrivate::sendPendingMoveAndResizeEvents(bool recursive=false, bool disableUpdates=false) Line 6264 + 0xe bytes
QtGuid4.dll!QWidgetPrivate::show_helper() Line 6318
QtGuid4.dll!QWidget::setVisible(bool visible=true) Line 6587
QtGuid4.dll!QWidget::show() Line 464 + 0x16 bytes
QtGuid4.dll!QWidgetPrivate::showChildren(bool spontaneous=false) Line 6668
QtGuid4.dll!QWidgetPrivate::show_helper() Line 6324
QtGuid4.dll!QWidget::setVisible(bool visible=true) Line 6587
QtGuid4.dll!QWidget::show() Line 464 + 0x16 bytes
QtGuid4.dll!QWidget::showMaximized() Line 2543
myproj.exe!MyOpenGL::CreateMap() Line 229
myproj.exe!MainWindow::open3dMap() Line 311
myproj.exe!MainWindow::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=2, void * * _a=0x0012bbec) Line 71 + 0x8 bytes
QtCored4.dll!QMetaObject::activate(QObject * sender=0x01bf98d8, int from_signal_index=5, int to_signal_index=6, void * * argv=0x0012bbec) Line 3022 + 0x2b bytes
QtCored4.dll!QMetaObject::activate(QObject * sender=0x01bf98d8, const QMetaObject * m=0x65a7af28, int from_local_signal_index=1, int to_local_signal_index=2, void * * argv=0x0012bbec) Line 3112 + 0x15 bytes
QtGuid4.dll!QAction::triggered(bool _t1=true) Line 216 + 0x17 bytes
QtGuid4.dll!QAction::activate(QAction::ActionEvent event=Trigger) Line 1127
QtGuid4.dll!QAction::trigger() Line 195 + 0x11 bytes
QtGuid4.dll!QToolButton::nextCheckState() Line 1098
QtGuid4.dll!QAbstractButtonPrivate::click() Line 521
QtGuid4.dll!QAbstractButton::mouseReleaseEvent(QMouseEvent * e=0x0012c2f4) Line 1111
QtGuid4.dll!QToolButton::mouseReleaseEvent(QMouseEvent * e=0x0012c2f4) Line 672
QtGuid4.dll!QWidget::event(QEvent * event=0x0012c2f4) Line 7164
QtGuid4.dll!QAbstractButton::event(QEvent * e=0x0012c2f4) Line 1073
QtGuid4.dll!QToolButton::event(QEvent * e=0x0012c2f4) Line 1104
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x01c0fbf0, QEvent * e=0x0012c2f4) Line 3803 + 0x11 bytes
QtGuid4.dll!QApplication::notify(QObject * receiver=0x01c0fbf0, QEvent * e=0x0012c2f4) Line 3528 + 0x2f bytes
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x01c0fbf0, QEvent * event=0x0012c2f4) Line 587 + 0x15 bytes
QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver=0x01c0fbf0, QEvent * event=0x0012c2f4) Line 212 + 0x38 bytes
QtGuid4.dll!QApplicationPrivate::sendMouseEvent(QWidget * receiver=0x01c0fbf0, QMouseEvent * event=0x0012c2f4, QWidget * alienWidget=0x01c0fbf0, QWidget * nativeWidget=0x0012fdc0, QWidget * * buttonDown=0x65a7c74c, QPointer<QWidget> & lastMouseReceiver={...}) Line 2793 + 0xe bytes
QtGuid4.dll!QETWidget::translateMouseEvent(const tagMSG & msg={...}) Line 3085 + 0x28 bytes
QtGuid4.dll!QtWndProc(HWND__ * hwnd=0x000909b4, unsigned int message=514, unsigned int wParam=0, long lParam=2163145) Line 1543 + 0xc bytes
user32.dll!761686ef()
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
user32.dll!76168876()
user32.dll!7616881f()
user32.dll!761689b5()
user32.dll!76168e9c()
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 737 + 0x21 bytes
QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 1084 + 0x15 bytes
QtCored4.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 144
QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags={...}) Line 194 + 0x1c bytes
QtCored4.dll!QCoreApplication::exec() Line 845 + 0x15 bytes
QtGuid4.dll!QApplication::exec() Line 3332
myproj.exe!main(int argc=1, char * * argv=0x01a4d140) Line 17 + 0x8 bytes
myproj.exe!WinMain(HINSTANCE__ * instance=0x00400000, HINSTANCE__ * prevInstance=0x00000000, char * __formal=0x002131dc, int cmdShow=1) Line 134 + 0x12 bytes
myproj.exe!__tmainCRTStartup() Line 589 + 0x35 bytes C
myproj.exe!WinMainCRTStartup() Line 414 C
kernel32.dll!76391174()
ntdll.dll!76f5b3f5()
ntdll.dll!76f5b3c8()
myproj.exe!CBmh::NewMatrix(QString name={...}) Line 120 + 0x7 bytes
myproj.exe!MKarta::WriteKarta(_iobuf * h_nuxfile=0x0063006f, int version=7536741) Line 4222 + 0x2c bytes
myproj.exe!MKlassifikator::Append(MKlassifikator * pKls=0x0031005f) Line 2165 + 0x14 bytes
myproj.exe!MyOpenGL::MyOpenGL(QWidget * parent=0x0063006f, QFlags<enum Qt::WindowType> flags={...}) Line 44 + 0x11 bytes
myproj.exe!MKlassifikator::Append(MKlassifikator * pKls=0x006e0069) Line 2165 + 0x14 bytes
myproj.exe!MKarta::WriteKarta(_iobuf * h_nuxfile=0x0063006f, int version=7536741) Line 4222 + 0x2c bytes
myproj.exe!MKlassifikator::Append(MKlassifikator * pKls=0x0035005f) Line 2165 + 0x14 bytes
myproj.exe!MyOpenGL::MyOpenGL(QWidget * parent=0x00330063, QFlags<enum Qt::WindowType> flags={...}) Line 44 + 0x11 bytes
myproj.exe!MyOpenGL::MyOpenGL(QWidget * parent=0x0063006f, QFlags<enum Qt::WindowType> flags={...}) Line 42 + 0x27 bytes
myproj.exe!MKlassifikator::Append(MKlassifikator * pKls=0x006e0069) Line 2165 + 0x14 bytes
myproj.exe!MKarta::WriteKarta(_iobuf * h_nuxfile=0x0022003d, int version=7667826) Line 4222 + 0x2c bytes
myproj.exe!MapkaWin::MapkaWin(QWidget * parent=0x004b0063) Line 11 + 0x10 bytes
myproj.exe!CBmh::NewMatrix(QString name={...}) Line 120 + 0x7 bytes
myproj.exe!LOMTOASPL(MPtArray * ptar=0x0035005f, unsigned char vid='.', double * vesarray=0x002e0032, int kolpts=3538999) Line 2048 + 0x14 bytes
myproj.exe!MyOpenGL::MyOpenGL(QWidget * parent=0x00300030, QFlags<enum Qt::WindowType> flags={...}) Line 44 + 0x11 bytes
В коде указывает на строку 8(строка 658 в файле cpl_string.cpp, который был взят gdal-1.9.0\port\):

Код: Выделить всё

1 int CSLFindString( char ** papszList, const char * pszTarget )
2 {
3    int         i;
4
5    if( papszList == NULL )
6        return -1;
7
8     for( i = 0; papszList[i] != NULL; i++ )
9    {
10        if( EQUAL(papszList[i],pszTarget) )
11            return i;
12    }
13
14    return -1;
15 }
В "Properties -> Configuration Properties -> General -> Charset Set" стоит "Use Multi-Byte Character Set".

count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 12 мар 2012, 16:22

Решил проблему следующим образом - собрал библиотеку как /MDd (т.к. проект был собран как /MDd). С помощью ms visual studio 8 это делается так: открываем текстовым редактором файл nmake.opt, ищем строки

Код: Выделить всё

OPTFLAGS= $(CXX_ANALYZE_FLAGS) /nologo /MD /EHsc /Ox /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DNDEBUG
!ELSE
OPTFLAGS= $(CXX_ANALYZE_FLAGS) /nologo /MD /EHsc /Zi /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /Fd$(GDAL_ROOT)\gdal$(VERSION).pdb /DDEBUG
!ENDIF
!ELSE
!IFNDEF DEBUG
OPTFLAGS=	/nologo /MD /EHsc /GR /Ox /DNDEBUG
!ELSE
OPTFLAGS=	/nologo /MD /EHsc /GR /Zi /Fd$(GDAL_ROOT)\gdal$(VERSION).pdb  /DDEBUG
и меняем /MD на /MDd.
Далее делаем build с помощью visual studio

count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 13 мар 2012, 15:10

Я только обучаюсь, не судите строго.
Подключил библиотеку, открыл geotiff для чтения. Теперь мне необходимо применить растровый канал geotiff в качестве текстуры (пока без привязки, просто "натянуть" на шарик).

Код: Выделить всё

	GDALDataset  *poDataset;
	GDALRegister_GTiff();

	poDataset = (GDALDataset *) GDALOpen( "some.tif", GA_ReadOnly );

	GDALRasterBand  *poBand;
	poBand = poDataset->GetRasterBand(1);

	glTexImage2D(GL_TEXTURE_2D, 0, 3, 
		poBand->GetXSize(),
		poBand->GetYSize(),
                0, GL_RGB, GL_UNSIGNED_BYTE,
	  poBand->GetOverview(1));

	GDALClose(poDataset);
Отображается полная чепуха. Думаю, вся проблема в строчке "poBand->GetOverview(1)". Что не так? Что нужно исправить?

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение Voltron » 13 мар 2012, 15:21

Хм... а зачем вы overview берете? Берите сам канал

count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 13 мар 2012, 15:28

Voltron писал(а):Хм... а зачем вы overview берете? Берите сам канал
т.е. просто poBand?

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение Voltron » 13 мар 2012, 17:32

Да. poBand. И еще у меня сомнения насчет того, что glTexImage2D последним параметром ожидает получить GDALRasterBand

count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 14 мар 2012, 08:25

glTexImage2D последним параметром ожидает получить указатель на изображение в памяти.
Спойлер
void glTexImage2D( GLenum target,
GLint level,
GLint internalFormat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid * data);
В руководстве по использованию GDAL, в пункте Чтение растровых данных, встретил такие строчки:

Код: Выделить всё

	float *pafScanline;
    int   nXSize = poBand->GetXSize();
    int   nYSize = poBand->GetYSize();

	pafScanline = (float *) CPLMalloc(sizeof(float)*nXSize*nYSize);
Далее в отображении текстуры использую pafScanline, и ничего не выходит. Текстура не отображается.
В чем польза использования GDALRasterBand::RasterIO() в моем случае?

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение Дмитрий Барышников » 14 мар 2012, 11:28

Покажите весь код, включая место использования RasterIO.
Почитайте http://www.gdal.org/classGDALDataset.ht ... b891a05743
Напишите точно, что понимается под изображением в методе glTexImage2D, т.к. в const GLvoid * может быть записан любой "мусор". Какой порядок строк и столбцов для различных слоев, какой формат записи значений пикселов?

count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 14 мар 2012, 13:59

Bishop писал(а):Покажите весь код, включая место использования RasterIO.
Почитайте http://www.gdal.org/classGDALDataset.ht ... b891a05743
Напишите точно, что понимается под изображением в методе glTexImage2D, т.к. в const GLvoid * может быть записан любой "мусор". Какой порядок строк и столбцов для различных слоев, какой формат записи значений пикселов?
Вот код, где я подключаю текстуру:

Код: Выделить всё

	glBindTexture(GL_TEXTURE_2D,tif_texture);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

	GDALDataset  *poDataset;
	GDALRegister_GTiff();

	poDataset = (GDALDataset *) GDALOpen( "some.tif", GA_ReadOnly );

	GDALRasterBand  *poBand;
	poBand = poDataset->GetRasterBand(1);

	float *pafScanline;
        int   nXSize = poBand->GetXSize();
        int   nYSize = poBand->GetYSize();

	pafScanline = (float *) CPLMalloc(sizeof(float)*nXSize*nYSize);
	poBand->RasterIO( GF_Read, 0, 0, nXSize, nYSize, 
                          pafScanline, nXSize, nYSize, GDT_Float32, 
                          0, 0 );

 	glTexImage2D(GL_TEXTURE_2D, 0, 3, 
		poBand->GetXSize(),
		poBand->GetYSize(),
	  0, GL_RGBA, GL_UNSIGNED_BYTE,
	  pafScanline);

	CPLFree(pafScanline);
	GDALClose(poDataset);
Теперь текстура отображается. Синего цвета, на весь шар. Ранее текстура не отображалась по этой причине, как я понимаю:

Код: Выделить всё

poBand->RasterIO( GF_Read, 0, 0, nXSize, 1, pafScanline, nXSize, 1, GDT_Float32, 0, 0 );
Высота канала была установлена в 1 строку?
Bishop, не могли бы Вы пояснить что значит
Bishop писал(а):Какой порядок строк и столбцов для различных слоев, какой формат записи значений пикселов?
Это ведь в RasterIO() задается? Так же установил в glTexImage2D формат пиксельных данных - GL_RGBA

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение Дмитрий Барышников » 14 мар 2012, 19:54

Я делал так:

Код: Выделить всё


CPLErrorReset();

int panBandList[3] = {1,2,3};//три канала GL_RGB! для GL_RGBA нужно 4!

GDALDataType eDT = GDT_Float32;//почему именно этот тип?
//GL_RGBA или GL_RGB разве значения не от 0 до 1?

CPLErr err = poDataset->AdviseRead(nXOff, nYOff, nXSize, nYSize, nBufXSize, nBufYSize, eDT, 3, panBandList, NULL);
if(err != CE_None)
{
const char* pszerr = CPLGetLastErrorMsg();
return false;
}

int nPixelSpace(0);
int nLineSpace(0);
int nBandSpace(0);
if(nBandCount > 1)
{
int nDataSize = GDALGetDataTypeSize(eDT) / 8;
nPixelSpace = nDataSize * nBandCount;
nLineSpace = nBufXSize * nPixelSpace;
nBandSpace = nDataSize;
}
err = poDataset->RasterIO(0, 0, nXSize, nYSize, pafBuffer, nXSize, nYSize, eDT, 3, panBandList, nPixelSpace, nLineSpace, nBandSpace)
if(err != CE_None)
{
const char* pszerr = CPLGetLastErrorMsg();
return false;
}

Следует отметить что если в tiff данные в другом формате, не float, a byte, то никаких преобразований с раcтяжкой производиться не будет и буфер будут записаны значение от 0.0 до 255.0
Если не те цвета - меняйте порядок каналов panBandList[3] = {1,2,3}
Если нет изображения - надо поэкспериментировать с nPixelSpace, nLineSpace, nBandSpace.

count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 15 мар 2012, 11:07

Поменял тип данных на GDT_BYTE (в tiff используетcя GDT_BYTE), так же изменил в glTexImage2D() GL_RGB :D

Код: Выделить всё

	GDALRasterBand  *poBand;
	poBand = poDataset->GetRasterBand(1);

	float *pafScanline;
        int   nXSize = poBand->GetXSize();
        int   nYSize = poBand->GetYSize();

	pafScanline = (float *) CPLMalloc(sizeof(float)*nXSize*nYSize);
	poBand->RasterIO( GF_Read, 0, 0, nXSize, nYSize, 
                          pafScanline, nXSize, nYSize, GDT_Byte, 
                          0, 0 );
	
	glGenTextures(1, &tif_texture);
	glBindTexture(GL_TEXTURE_2D,tif_texture);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

	glTexImage2D(GL_TEXTURE_2D, 0, 3, 
		poBand->GetXSize(),
		poBand->GetYSize(),
	  0, GL_RGB, GL_UNSIGNED_BYTE,
	  pafScanline);

	CPLFree(pafScanline);
	GDALClose(poDataset);
Теперь текстура не на весь шарик, и цвет нормальный. Вот как выглядит:
screen.png
сфера с tiff
screen.png (376.79 КБ) 12894 просмотра
Жаль, что присутствует эффект "воронки". Нужно, чтобы привязывалась к системе координат шарика и отображалась не растягиваясь. Буду разбираться.

count_null
Новоприбывший
Сообщения: 11
Зарегистрирован: 22 фев 2012, 14:09
Репутация: 0

Re: MS Visual Studio 2005, С++, Qt 4.4.3, OpenGL, GDAL/OGR

Сообщение count_null » 01 июн 2012, 14:08

Не получается добиться эффекта как, например, в QuantumGIS (см. изображение). Т.е. отобразить tif как на Globe в QuantumGIS с привязкой к координате. В проекте я использую геоцентрическую систему координат. Подскажите пути решения проблемы, пожалуйста.
Вложения
123.png
Отображение tif-файла с привязкой к системе координат и корректное отображение на "глобусе".
123.png (1.48 МБ) 12623 просмотра

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя