Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Patrick Egli

Treue Seele

  • »Patrick Egli« ist der Autor dieses Themas

Beiträge: 161

Wohnort: Rainstrasse 38

  • Private Nachricht senden

1

26.03.2011, 16:52

wxWidgets und DirectX 9 Move

Hi

Ich wollte einen Editor programmieren mit wxWidgets und DirectX 9. Zu beginn habe ich DirectX 9 initialisiert mit wxWidgets. Das funktioniert einwandfrei. Danach habe ich ein einfaches Dreieck gerendert, dies funktionierte ebenfalls. Dann wollte ich das Dreieck rotieren, doch leider ging das rotieren des Dreiecks nicht.

Ich habe eine OnPaint Funktion erzeugt mit einem Parameter von wxPaintEvent. In dieser Funktion habe ich die Render-Funktion des Dreiecks aufgerufen.

Hier ein Codeausschitt:

C-/C++-Quelltext

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
Window::Window(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(500, 500))
{
    Menu = new wxMenuBar;
    File = new wxMenu;
    Add = new wxMenu;
    m_pDevice = NULL;
    m_pDevice = new CDevice();

    File->Append(wxID_ANY, wxT("&New"));
    File->Append(wxID_ANY, wxT("&Open"));
    File->Append(wxID_EXIT, wxT("&Quit"));

    Add->Append(ID_ADD_CUBE, wxT("&Cube"));

    Menu->Append(File, wxT("&File"));
    Menu->Append(Add, wxT("&Add"));

    SetMenuBar(Menu);

    Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(Window::OnQuit));
    Connect(ID_ADD_CUBE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(Window::OnAddCube));
    Connect(wxEVT_PAINT, wxPaintEventHandler(Window::OnRender));

    WindowColor.Set(wxT("#ededed"));
    PanelColor.Set(wxT("#ffffff"));

    wxPanel * window = new wxPanel(this, -1);
    window->SetBackgroundColour(WindowColor);

    vbox = new wxBoxSizer(wxVERTICAL);

    wxPanel * panel = new wxPanel(window, wxID_ANY);
    panel->SetBackgroundColour(PanelColor);

    vbox->Add(panel, 1, wxEXPAND | wxALL, 20);
    window->SetSizer(vbox);

    m_pDevice->InitD3D(panel->GetHWND(), 500, 500);

    m_pTriangle = new CTriangle(m_pDevice);

    Centre();
}

void Window::OnQuit(wxCommandEvent& WXUNUSED(event))
{
    Close(true);
}

void Window::OnAddCube(wxCommandEvent& WXUNUSED(event))
{
    wxMessageDialog * DialogBox = new wxMessageDialog(NULL, wxT("New Cube will load"),
                                                      wxT("Successful"), wxOK | wxICON_EXCLAMATION);
    DialogBox->ShowModal();

    g_pRenderManager->AddRenderObject(m_pTriangle);
}

void Window::OnRender(wxPaintEvent& event)
{
    m_pDevice->Render();
}


Kann mir jemand helfen, wie ich eine Move Funktion mit wxWidgets programmieren kann?

LG Patrick

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

2

26.03.2011, 20:05

Du könntest das Ganze ins IdleEvent packen.