使用蓋莫游戲引擎在線程中渲染的簡單例子
繪制簡單的幾何體小例子
比較簡單
代碼如下:
1 #include <GEngine/GaiMo.hpp>
2
3 core::Color color1(0.0f,0.0f,1.0f),color2(0.0f,1.0f,0.0f);
4 core::Color color3(1.0f,0.0f,0.0f),color4(1.0f,0.0f,1.0f);
5 core::Color color5(1.0f,1.0f,0.0f),color6(0.0f,1.0f,1.0f);
6
7 core::Device *device = NULL;
8
9 ThreadId id = 0;
10 bool flag = true;
11
12 void G_CALL Render(void* ptr)
13 {
14 device->AttachRender();
15 do
16 {
17 BEGIN_LOOP(device)
18 //! 繪制矩形
19 core::Render::SetCurrentColor(color1);
20 core::Render::FillRect(100,120,50,50);
21 //! 繪制矩形
22 core::Render::SetCurrentColor(color2);
23 core::Render::DrawRect(100,180,50,50);
24 //! 繪制網格
25 core::Render::SetCurrentColor(color3);
26 core::Render::DrawGrid(Point(10,10),Point(20,20),Point(5,5));
27 //! 繪制變色矩形
28 core::Render::DrawRaisedRectangle(libmath::Rect<float>(250,50,50,50),color5,color6);
29 //! 繪制三角形
30 core::Render::SetCurrentColor(color4);
31 core::Render::DrawTriangle(Point(200,180),Point(200,270),Point(290,110),true);
32 END_LOOP(device);
33 }while(flag);
34 }
35
36 int Main()
37 {
38 device = core::InitDevice("線程渲染");
39 device->Ortho2D();
40 device->DetachRender();
41 id = device->CreateThread(Render,NULL);
42 BEGIN_LOOP(device)
43 if(device->GetInput()->IsPressedKey(KEY_BACKSPACE) == true)
44 flag = false;
45 END_LOOP(device)
46
47 device->Close();
48 device->Drop();
49
50 return 1;
51 }
52
貼圖為:

說明使用線程渲染是先斷開opengl上下文
然后在線程中再勾住opengl上下文
然后其他操作就一般化了