Hej! Mam pewien problem z połączeniem SDL i Qt... Nie wiem czy tak się w ogóle to da zrobić...
W pliku projektu dodałem odpowiednie biblioteki :
#-------------------------------------------------
#
# Project created by QtCreator 2012-09-02T14:20:43
#
#-------------------------------------------------
QT += core gui
TARGET = Qttest1
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
RESOURCES += \
zasoby1.qrc
INCLUDEPATH += C:\SDL-1.2.15\include
LIBS += -LC:\SDL-1.2.15\lib\
-LSDL\
-lSDLmain
LIBS += -lSDL.dll
win32 {
DEFINES += SDL_WIN
}
kod main.cpp
#include <QtGui/QApplication>
#include <QMessageBox>
#include <SDL/SDL.h>
#include "mainwindow.h"
#define WIDTH 640
#define HEIGHT 480
#define BPP 4
#define DEPTH 32
#undef main
int main(int argc, char *argv[])
{
QMessageBox msgBox;
msgBox.setText("1 ");
msgBox.exec();
SDL_Surface *screen;
if(SDL_Init(SDL_INIT_VIDEO)<0) {
QMessageBox msgBox;
msgBox.setText("BLAD ogolny! ");
msgBox.exec();
return 1;
}
screen=SDL_SetVideoMode(800,600,32,SDL_ANYFORMAT);
if(screen==NULL) {
QMessageBox msgBox;
msgBox.setText("Blad inicjacji video! ");
msgBox.exec();
return 1;
}
QApplication a(argc, argv);
MainWindow w;
w.show();
SDL_Quit();
return a.exec();
}
Kompiluje się z ostrzeżeniem
c:\SDL-1.2.15\include\SDL\SDL_main.h ostrzeżenie:"main" redefined
c:\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtGui\qwindowdefs.h ostrzeżenie:this is the location of the previous definition
ale kompiluje...
Plik SDL.dll skopiowałem do katalogu gdzie jest exe z projektem
Program się uruchamia normalnie, przez chwilę pojawia się okienko konsoli z SLD_App, znika i pojawia się formularz w Qt.
Teraz pytanie : czy da się za pomocą SDL zmienić rozdzielczość dla programu i formularzy w Qt?
Czy pozostaje tylko użycie funkcji Windows API ? Czy da się jakość DirectX połączyć z Qt ?
Czy lepiej nie bawić się w takie mixy i użyć Open GL wbudowanego w Qt ? (tam się da jakoś sterować rozdzielczością i kolorami?) ?
Kod main.cpp
#include <QtGui/QApplication>
#include <QMessageBox>
#include <SDL/SDL.h>
#include <windows.h>
#include "mainwindow.h"
#define WIDTH 640
#define HEIGHT 480
#define BPP 4
#define DEPTH 32
#undef main
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
SDL_Surface *screen;
if(SDL_Init(SDL_INIT_VIDEO)<0) {
QMessageBox msgBox;
msgBox.setText("BLAD Inicjalizacji Video! ");
MessageBox(NULL, L"Blad inicjalizacji wideo!", L"Blad", MB_ICONERROR);
msgBox.exec();
return 1;
}
screen=SDL_SetVideoMode(800,600,32,SDL_ANYFORMAT);
if(screen==NULL) {
MessageBox(NULL, L"Blad ustawiania trybu wideo!", L"Blad", MB_ICONERROR);
return 1;
}
w.show();
SDL_Quit();
return a.exec();
}
Z góry dzięki za odpowiedzi :)