v01
This commit is contained in:
6
thirdparty/Pangolin/examples/SimpleMultiDisplay/CMakeLists.txt
vendored
Normal file
6
thirdparty/Pangolin/examples/SimpleMultiDisplay/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
# Find Pangolin (https://github.com/stevenlovegrove/Pangolin)
|
||||
find_package(Pangolin 0.4 REQUIRED)
|
||||
include_directories(${Pangolin_INCLUDE_DIRS})
|
||||
|
||||
add_executable(SimpleMultiDisplay main.cpp)
|
||||
target_link_libraries(SimpleMultiDisplay ${Pangolin_LIBRARIES})
|
||||
28
thirdparty/Pangolin/examples/SimpleMultiDisplay/app.cfg
vendored
Normal file
28
thirdparty/Pangolin/examples/SimpleMultiDisplay/app.cfg
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Pangolin Sample configuration file
|
||||
% Comments start with '%' or '#'
|
||||
%
|
||||
% Declarations are name value pairs,
|
||||
% seperated with '=' and terminated with ';'
|
||||
|
||||
% We can set any variable referenced in code directly
|
||||
ui.A Double = 3.2;
|
||||
|
||||
% We can set unreferenced variables too
|
||||
a.b = 1;
|
||||
a.c = 2;
|
||||
z.b = 3;
|
||||
z.c = 4;
|
||||
start = z;
|
||||
|
||||
% Which we might refer to by reference
|
||||
ui.An Int = ${${start}.c};
|
||||
|
||||
% Declarations can span multiple lines
|
||||
M =
|
||||
[1, 0, 0
|
||||
0, 1, 0
|
||||
0, 0, 1];
|
||||
|
||||
ui.Aliased Double = @ui.A Double;
|
||||
ui.Aliased Double = 2.0;
|
||||
106
thirdparty/Pangolin/examples/SimpleMultiDisplay/main.cpp
vendored
Normal file
106
thirdparty/Pangolin/examples/SimpleMultiDisplay/main.cpp
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
#include <iostream>
|
||||
#include <pangolin/pangolin.h>
|
||||
|
||||
void setImageData(unsigned char * imageArray, int size){
|
||||
for(int i = 0 ; i < size;i++) {
|
||||
imageArray[i] = (unsigned char)(rand()/(RAND_MAX/255.0));
|
||||
}
|
||||
}
|
||||
|
||||
int main(/*int argc, char* argv[]*/)
|
||||
{
|
||||
// Create OpenGL window in single line
|
||||
pangolin::CreateWindowAndBind("Main",640,480);
|
||||
|
||||
// 3D Mouse handler requires depth testing to be enabled
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
// Issue specific OpenGl we might need
|
||||
glEnable (GL_BLEND);
|
||||
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// Define Camera Render Object (for view / scene browsing)
|
||||
pangolin::OpenGlMatrix proj = pangolin::ProjectionMatrix(640,480,420,420,320,240,0.1,1000);
|
||||
pangolin::OpenGlRenderState s_cam(proj, pangolin::ModelViewLookAt(1,0.5,-2,0,0,0, pangolin::AxisY) );
|
||||
pangolin::OpenGlRenderState s_cam2(proj, pangolin::ModelViewLookAt(0,0,-2,0,0,0, pangolin::AxisY) );
|
||||
|
||||
// Add named OpenGL viewport to window and provide 3D Handler
|
||||
pangolin::View& d_cam1 = pangolin::Display("cam1")
|
||||
.SetAspect(640.0f/480.0f)
|
||||
.SetHandler(new pangolin::Handler3D(s_cam));
|
||||
|
||||
pangolin::View& d_cam2 = pangolin::Display("cam2")
|
||||
.SetAspect(640.0f/480.0f)
|
||||
.SetHandler(new pangolin::Handler3D(s_cam2));
|
||||
|
||||
pangolin::View& d_cam3 = pangolin::Display("cam3")
|
||||
.SetAspect(640.0f/480.0f)
|
||||
.SetHandler(new pangolin::Handler3D(s_cam));
|
||||
|
||||
pangolin::View& d_cam4 = pangolin::Display("cam4")
|
||||
.SetAspect(640.0f/480.0f)
|
||||
.SetHandler(new pangolin::Handler3D(s_cam2));
|
||||
|
||||
pangolin::View& d_img1 = pangolin::Display("img1")
|
||||
.SetAspect(640.0f/480.0f);
|
||||
|
||||
pangolin::View& d_img2 = pangolin::Display("img2")
|
||||
.SetAspect(640.0f/480.0f);
|
||||
|
||||
// LayoutEqual is an EXPERIMENTAL feature - it requires that all sub-displays
|
||||
// share the same aspect ratio, placing them in a raster fasion in the
|
||||
// viewport so as to maximise display size.
|
||||
pangolin::Display("multi")
|
||||
.SetBounds(0.0, 1.0, 0.0, 1.0)
|
||||
.SetLayout(pangolin::LayoutEqual)
|
||||
.AddDisplay(d_cam1)
|
||||
.AddDisplay(d_img1)
|
||||
.AddDisplay(d_cam2)
|
||||
.AddDisplay(d_img2)
|
||||
.AddDisplay(d_cam3)
|
||||
.AddDisplay(d_cam4);
|
||||
|
||||
const int width = 64;
|
||||
const int height = 48;
|
||||
unsigned char* imageArray = new unsigned char[3*width*height];
|
||||
pangolin::GlTexture imageTexture(width,height,GL_RGB,false,0,GL_RGB,GL_UNSIGNED_BYTE);
|
||||
|
||||
// Default hooks for exiting (Esc) and fullscreen (tab).
|
||||
while( !pangolin::ShouldQuit() )
|
||||
{
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
// Generate random image and place in texture memory for display
|
||||
setImageData(imageArray,3*width*height);
|
||||
imageTexture.Upload(imageArray,GL_RGB,GL_UNSIGNED_BYTE);
|
||||
|
||||
glColor3f(1.0,1.0,1.0);
|
||||
|
||||
d_cam1.Activate(s_cam);
|
||||
pangolin::glDrawColouredCube();
|
||||
|
||||
d_cam2.Activate(s_cam2);
|
||||
pangolin::glDrawColouredCube();
|
||||
|
||||
d_cam3.Activate(s_cam);
|
||||
pangolin::glDrawColouredCube();
|
||||
|
||||
d_cam4.Activate(s_cam2);
|
||||
pangolin::glDrawColouredCube();
|
||||
|
||||
d_img1.Activate();
|
||||
glColor4f(1.0f,1.0f,1.0f,1.0f);
|
||||
imageTexture.RenderToViewport();
|
||||
|
||||
d_img2.Activate();
|
||||
glColor4f(1.0f,1.0f,1.0f,1.0f);
|
||||
imageTexture.RenderToViewport();
|
||||
|
||||
// Swap frames and Process Events
|
||||
pangolin::FinishFrame();
|
||||
}
|
||||
|
||||
delete[] imageArray;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user