[DEV] direct FB basic implementation (does not work on PC)
This commit is contained in:
parent
4127dfbfdf
commit
da0642e4cb
13
sources/ConfigLinux.in
Normal file
13
sources/ConfigLinux.in
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
menu "Linux"
|
||||||
|
choice
|
||||||
|
prompt "Display orientation mode"
|
||||||
|
default __EWOL_LINUX_GUI_MODE_X11__
|
||||||
|
help
|
||||||
|
display Gui interface
|
||||||
|
config __EWOL_LINUX_GUI_MODE_X11__
|
||||||
|
bool "0: X11 mode"
|
||||||
|
config __EWOL_LINUX_GUI_MODE_DIRECT_FB__
|
||||||
|
bool "1: Direct FB mode"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
endmenu
|
@ -5,7 +5,7 @@ include $(CLEAR_VARS)
|
|||||||
# name of the librairy
|
# name of the librairy
|
||||||
LOCAL_MODULE := ewol
|
LOCAL_MODULE := ewol
|
||||||
|
|
||||||
LOCAL_CONFIG_FILES := Config.in
|
LOCAL_CONFIG_FILES := Config.in ConfigLinux.in
|
||||||
|
|
||||||
# get the tag of the current project :
|
# get the tag of the current project :
|
||||||
LOCAL_VERSION=$(shell cat $(LOCAL_PATH)/tag)
|
LOCAL_VERSION=$(shell cat $(LOCAL_PATH)/tag)
|
||||||
@ -17,7 +17,16 @@ LOCAL_LIBRARIES := etk freetype tinyxml libzip libpng parsersvg lua portaudio bu
|
|||||||
LOCAL_C_INCLUDES :=
|
LOCAL_C_INCLUDES :=
|
||||||
|
|
||||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
|
||||||
LOCAL_EXPORT_LDLIBS := -lGL -lX11
|
LOCAL_EXPORT_LDLIBS := -lGL
|
||||||
|
|
||||||
|
#`pkg-config --cflags directfb` `pkg-config --libs directfb`
|
||||||
|
|
||||||
|
ifeq ("$(CONFIG___EWOL_LINUX_GUI_MODE_X11__)","y")
|
||||||
|
LOCAL_EXPORT_LDLIBS += -lX11
|
||||||
|
endif
|
||||||
|
ifeq ("$(CONFIG___EWOL_LINUX_GUI_MODE_DIRECT_FB__)","y")
|
||||||
|
LOCAL_EXPORT_LDLIBS += -ldirectfb
|
||||||
|
endif
|
||||||
|
|
||||||
#http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Introduction
|
#http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Introduction
|
||||||
# needed package on linux : libgl1-mesa-dev libglew1.5-dev
|
# needed package on linux : libgl1-mesa-dev libglew1.5-dev
|
||||||
@ -32,11 +41,16 @@ LOCAL_EXPORT_CFLAGS :=
|
|||||||
# load the common sources file of the platform
|
# load the common sources file of the platform
|
||||||
include $(LOCAL_PATH)/file.mk
|
include $(LOCAL_PATH)/file.mk
|
||||||
|
|
||||||
LOCAL_SRC_FILES := \
|
LOCAL_SRC_FILES := $(FILE_LIST) \
|
||||||
$(FILE_LIST) \
|
ewol/renderer/audio/interfacePortAudio.cpp
|
||||||
ewol/renderer/os/gui.X11.cpp \
|
|
||||||
ewol/renderer/audio/interfacePortAudio.cpp
|
|
||||||
|
|
||||||
|
ifeq ("$(CONFIG___EWOL_LINUX_GUI_MODE_X11__)","y")
|
||||||
|
LOCAL_SRC_FILES += ewol/renderer/os/gui.X11.cpp
|
||||||
|
endif
|
||||||
|
ifeq ("$(CONFIG___EWOL_LINUX_GUI_MODE_DIRECT_FB__)","y")
|
||||||
|
LOCAL_CFLAGS += -I/usr/include/directfb
|
||||||
|
LOCAL_SRC_FILES += ewol/renderer/os/gui.directFB.cpp
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
include $(BUILD_STATIC_LIBRARY)
|
include $(BUILD_STATIC_LIBRARY)
|
||||||
|
475
sources/ewol/renderer/os/gui.directFB.cpp
Normal file
475
sources/ewol/renderer/os/gui.directFB.cpp
Normal file
@ -0,0 +1,475 @@
|
|||||||
|
/**
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
*
|
||||||
|
* @copyright 2011, Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* @license BSD v3 (see license file)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
notes :
|
||||||
|
sudo edn /etc/udev/rules.d/framebuffer.rules
|
||||||
|
KERNEL=="fb0", OWNER="root", MODE="0660"
|
||||||
|
sudo usermod -a -G video username
|
||||||
|
sudo usermod -a -G tty username
|
||||||
|
sudo fbset -i
|
||||||
|
sudo chmod o+wr /dev/fb0
|
||||||
|
|
||||||
|
|
||||||
|
http://mail.directfb.org/pipermail/directfb-users/2010-February/002115.html
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ewol/debug.h>
|
||||||
|
#include <ewol/ewol.h>
|
||||||
|
#include <ewol/key.h>
|
||||||
|
#include <ewol/config.h>
|
||||||
|
#include <ewol/commandLine.h>
|
||||||
|
#include <etk/UString.h>
|
||||||
|
#include <etk/unicode.h>
|
||||||
|
#include <ewol/widget/WidgetManager.h>
|
||||||
|
#include <ewol/renderer/os/gui.h>
|
||||||
|
|
||||||
|
#include <ewol/renderer/ResourceManager.h>
|
||||||
|
#include <ewol/renderer/os/eSystem.h>
|
||||||
|
#include <ewol/renderer/openGL.h>
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <directfb.h>
|
||||||
|
#include <directfbgl.h>
|
||||||
|
|
||||||
|
|
||||||
|
int64_t guiInterface::GetTime(void)
|
||||||
|
{
|
||||||
|
struct timespec now;
|
||||||
|
int ret = clock_gettime(CLOCK_REALTIME, &now);
|
||||||
|
if (ret != 0) {
|
||||||
|
// Error to get the time ...
|
||||||
|
now.tv_sec = time(NULL);
|
||||||
|
now.tv_nsec = 0;
|
||||||
|
}
|
||||||
|
//EWOL_VERBOSE("current time : " << now.tv_sec << "s " << now.tv_usec << "us");
|
||||||
|
return (int64_t)((int64_t)now.tv_sec*(int64_t)1000000 + (int64_t)now.tv_nsec/(int64_t)1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef __class__
|
||||||
|
#define __class__ "guiInterface"
|
||||||
|
|
||||||
|
|
||||||
|
static ewol::SpecialKey guiKeyBoardMode;
|
||||||
|
|
||||||
|
bool inputIsPressed[20];
|
||||||
|
bool m_run = true;
|
||||||
|
bool m_grabAllEvent = false;
|
||||||
|
|
||||||
|
|
||||||
|
// the super interface
|
||||||
|
IDirectFB *dfb = NULL;
|
||||||
|
|
||||||
|
// the primary surface (surface of primary layer)
|
||||||
|
IDirectFBSurface *primary = NULL;
|
||||||
|
|
||||||
|
// the GL context
|
||||||
|
IDirectFBGL *primary_gl = NULL;
|
||||||
|
|
||||||
|
// event buffer
|
||||||
|
IDirectFBEventBuffer *events = NULL;
|
||||||
|
|
||||||
|
static int screen_width =800;
|
||||||
|
static int screen_height = 600;
|
||||||
|
|
||||||
|
static unsigned long T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
static GLfloat fps = 0;
|
||||||
|
|
||||||
|
static inline unsigned long get_millis()
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
|
||||||
|
gettimeofday (&tv, NULL);
|
||||||
|
return (tv.tv_sec * 1000 + tv.tv_usec / 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the new title of the windows
|
||||||
|
* @param title New desired title
|
||||||
|
* @return ---
|
||||||
|
*/
|
||||||
|
void guiInterface::SetTitle(etk::UString& title)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::SetIcon(etk::UString inputFile)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
void DirectFB_Init(int argc, const char *argv[])
|
||||||
|
{
|
||||||
|
EWOL_INFO("DirectFB Init (START)");
|
||||||
|
DFBResult err;
|
||||||
|
DFBSurfaceDescription dsc;
|
||||||
|
|
||||||
|
EWOL_INFO("call DirectFBInit");
|
||||||
|
int argc2 = 1;
|
||||||
|
err = DirectFBInit(&argc2, (char***)&argv);
|
||||||
|
if (DFB_OK!=err) {
|
||||||
|
EWOL_ERROR("DirectFBInit");
|
||||||
|
DirectFBErrorFatal("DirectFBInit", err);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
EWOL_INFO("call DirectFBCreate");
|
||||||
|
// create the super interface
|
||||||
|
err = DirectFBCreate(&dfb);
|
||||||
|
if (DFB_OK!=err) {
|
||||||
|
EWOL_ERROR("DirectFBCreate");
|
||||||
|
DirectFBErrorFatal("DirectFBCreate", err);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
EWOL_INFO("call CreateInputEventBuffer");
|
||||||
|
// create an event buffer for all devices with these caps
|
||||||
|
err = dfb->CreateInputEventBuffer(dfb, (DFBInputDeviceCapabilities)(DICAPS_KEYS | DICAPS_AXES), DFB_FALSE, &events);
|
||||||
|
if (DFB_OK!=err) {
|
||||||
|
EWOL_ERROR("dfb->CreateInputEventBuffer");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
EWOL_INFO("call SetCooperativeLevel");
|
||||||
|
// set our cooperative level to DFSCL_FULLSCREEN for exclusive access to the primary layer
|
||||||
|
//dfb->SetCooperativeLevel(dfb, DFSCL_FULLSCREEN);
|
||||||
|
dfb->SetCooperativeLevel(dfb, DFSCL_NORMAL);
|
||||||
|
|
||||||
|
// get the primary surface, i.e. the surface of the primary layer we have exclusive access to
|
||||||
|
dsc.flags = (DFBSurfaceDescriptionFlags)(DSDESC_CAPS);// | DSDESC_PIXELFORMAT);
|
||||||
|
//dsc.caps = (DFBSurfaceCapabilities)(DSCAPS_PRIMARY | DSCAPS_DOUBLE | DSCAPS_DEPTH); // DSCAPS_SHARED
|
||||||
|
dsc.caps = (DFBSurfaceCapabilities)(DSCAPS_PRIMARY | DSCAPS_FLIPPING);
|
||||||
|
//dsc.caps = (DFBSurfaceCapabilities) (DSCAPS_SUBSURFACE | DSCAPS_VIDEOONLY | DSCAPS_PREMULTIPLIED | DSCAPS_FLIPPING);
|
||||||
|
|
||||||
|
dsc.pixelformat = DSPF_ARGB;
|
||||||
|
dsc.width = 800;
|
||||||
|
dsc.height = 600;
|
||||||
|
|
||||||
|
EWOL_INFO("call CreateSurface");
|
||||||
|
err = dfb->CreateSurface(dfb, &dsc, &primary);
|
||||||
|
if (DFB_OK!=err) {
|
||||||
|
EWOL_ERROR("dfb->CreateSurface");
|
||||||
|
DirectFBErrorFatal("dfb->CreateSurface", err);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
primary->SetBlittingFlags(primary, DSBLIT_BLEND_ALPHACHANNEL);
|
||||||
|
primary->SetPorterDuff( primary, DSPD_ADD );
|
||||||
|
primary->SetDstBlendFunction(primary, DSBF_SRCALPHA);
|
||||||
|
primary->SetDrawingFlags(primary, DSDRAW_BLEND);
|
||||||
|
|
||||||
|
primary->Blit(primary, primary, NULL, 0, 0);
|
||||||
|
|
||||||
|
|
||||||
|
EWOL_INFO("call GetSize");
|
||||||
|
// get the size of the surface and fill it
|
||||||
|
err = primary->GetSize(primary, &screen_width, &screen_height);
|
||||||
|
if (DFB_OK!=err) {
|
||||||
|
EWOL_ERROR("primary->GetSize");
|
||||||
|
DirectFBErrorFatal("primary->GetSize", err);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
EWOL_INFO("call Flip");
|
||||||
|
primary->Flip(primary, NULL, (DFBSurfaceFlipFlags)0);//DSFLIP_ONSYNC);
|
||||||
|
//sleep(3);
|
||||||
|
|
||||||
|
EWOL_INFO("call GetGL");
|
||||||
|
// get the GL context
|
||||||
|
err = primary->GetGL(primary, &primary_gl);
|
||||||
|
if (DFB_OK!=err) {
|
||||||
|
EWOL_ERROR("primary->GetGL");
|
||||||
|
DirectFBErrorFatal("GetGL", err);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
EWOL_INFO("DirectFB Init (STOP)");
|
||||||
|
|
||||||
|
T0 = get_millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DirectFB_UnInit(void)
|
||||||
|
{
|
||||||
|
// release our interfaces to shutdown DirectFB
|
||||||
|
primary_gl->Release(primary_gl);
|
||||||
|
primary->Release(primary);
|
||||||
|
events->Release(events);
|
||||||
|
dfb->Release(dfb);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DirectFB_Run(void)
|
||||||
|
{
|
||||||
|
DFBResult err;
|
||||||
|
while (true==m_run) {
|
||||||
|
DFBInputEvent evt;
|
||||||
|
unsigned long t;
|
||||||
|
|
||||||
|
primary->SetColor (primary, 0x00, 0xFF, 0x00, 0x55);
|
||||||
|
primary->FillRectangle(primary, 200, 200, 300, 300);
|
||||||
|
primary->Flip(primary, NULL, (DFBSurfaceFlipFlags)0);//DSFLIP_ONSYNC);
|
||||||
|
/*
|
||||||
|
if(true == m_run) {
|
||||||
|
err = primary_gl->Lock(primary_gl);
|
||||||
|
if (DFB_OK!=err) {
|
||||||
|
EWOL_ERROR("primary_gl->Lock");
|
||||||
|
DirectFBErrorFatal("primary_gl->Lock", err);
|
||||||
|
}
|
||||||
|
// TODO : Set at false
|
||||||
|
bool hasDisplay = eSystem::Draw(true);
|
||||||
|
if (true==hasDisplay) {
|
||||||
|
glFinish();
|
||||||
|
}
|
||||||
|
err = primary_gl->Unlock(primary_gl);
|
||||||
|
if (DFB_OK!=err) {
|
||||||
|
EWOL_ERROR("primary_gl->Unlock");
|
||||||
|
DirectFBErrorFatal("primary_gl->Unlock", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
usleep(25);
|
||||||
|
if (fps) {
|
||||||
|
char buf[64];
|
||||||
|
snprintf(buf, 64, "%4.1f FPS\n", fps);
|
||||||
|
primary->SetColor(primary, 0xff, 0, 0, 0xff);
|
||||||
|
primary->DrawString(primary, buf, -1, screen_width - 5, 5, DSTF_TOPRIGHT);
|
||||||
|
}
|
||||||
|
primary->Flip(primary, NULL, (DFBSurfaceFlipFlags)0);
|
||||||
|
Frames++;
|
||||||
|
t = get_millis();
|
||||||
|
if (t - T0 >= 2000) {
|
||||||
|
GLfloat seconds = (t - T0) / 1000.0;
|
||||||
|
fps = Frames / seconds;
|
||||||
|
T0 = t;
|
||||||
|
Frames = 0;
|
||||||
|
}
|
||||||
|
while (events->GetEvent(events, DFB_EVENT(&evt)) == DFB_OK) {
|
||||||
|
switch (evt.type) {
|
||||||
|
case DIET_KEYPRESS:
|
||||||
|
switch (evt.key_symbol) {
|
||||||
|
case DIKS_ESCAPE:
|
||||||
|
m_run = false;
|
||||||
|
break;
|
||||||
|
case DIKS_CURSOR_UP:
|
||||||
|
//inc_rotx = 5.0;
|
||||||
|
break;
|
||||||
|
case DIKS_CURSOR_DOWN:
|
||||||
|
//inc_rotx = -5.0;
|
||||||
|
break;
|
||||||
|
case DIKS_CURSOR_LEFT:
|
||||||
|
//inc_roty = 5.0;
|
||||||
|
break;
|
||||||
|
case DIKS_CURSOR_RIGHT:
|
||||||
|
//inc_roty = -5.0;
|
||||||
|
break;
|
||||||
|
case DIKS_PAGE_UP:
|
||||||
|
//inc_rotz = 5.0;
|
||||||
|
break;
|
||||||
|
case DIKS_PAGE_DOWN:
|
||||||
|
//inc_rotz = -5.0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DIET_KEYRELEASE:
|
||||||
|
switch (evt.key_symbol) {
|
||||||
|
case DIKS_CURSOR_UP:
|
||||||
|
//inc_rotx = 0;
|
||||||
|
break;
|
||||||
|
case DIKS_CURSOR_DOWN:
|
||||||
|
//inc_rotx = 0;
|
||||||
|
break;
|
||||||
|
case DIKS_CURSOR_LEFT:
|
||||||
|
//inc_roty = 0;
|
||||||
|
break;
|
||||||
|
case DIKS_CURSOR_RIGHT:
|
||||||
|
//inc_roty = 0;
|
||||||
|
break;
|
||||||
|
case DIKS_PAGE_UP:
|
||||||
|
//inc_rotz = 0;
|
||||||
|
break;
|
||||||
|
case DIKS_PAGE_DOWN:
|
||||||
|
//inc_rotz = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DIET_AXISMOTION:
|
||||||
|
if (evt.flags & DIEF_AXISREL) {
|
||||||
|
switch (evt.axis) {
|
||||||
|
case DIAI_X:
|
||||||
|
//view_roty += evt.axisrel / 2.0;
|
||||||
|
break;
|
||||||
|
case DIAI_Y:
|
||||||
|
//view_rotx += evt.axisrel / 2.0;
|
||||||
|
break;
|
||||||
|
case DIAI_Z:
|
||||||
|
//view_rotz += evt.axisrel / 2.0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
// ClipBoard AREA :
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::ClipBoardGet(ewol::clipBoard::clipboardListe_te clipboardID)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::ClipBoardSet(ewol::clipBoard::clipboardListe_te clipboardID)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#undef __class__
|
||||||
|
#define __class__ "guiInterface"
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::Stop(void)
|
||||||
|
{
|
||||||
|
EWOL_INFO("X11-API: Stop");
|
||||||
|
m_run = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void guiInterface::KeyboardShow(void)
|
||||||
|
{
|
||||||
|
// nothing to do : No keyboard on computer ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::KeyboardHide(void)
|
||||||
|
{
|
||||||
|
// nothing to do : No keyboard on computer ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::ChangeSize(ivec2 size)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::ChangePos(ivec2 pos)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::GetAbsPos(ivec2& pos)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::SetCursor(ewol::cursorDisplay_te newCursor)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
void guiInterface::GrabPointerEvents(bool isGrabbed, vec2 forcedPosition)
|
||||||
|
{
|
||||||
|
// TODO : ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Main of the program
|
||||||
|
* @param std IO
|
||||||
|
* @return std IO
|
||||||
|
*/
|
||||||
|
int guiInterface::main(int argc, const char *argv[])
|
||||||
|
{
|
||||||
|
EWOL_INFO("Main (START)");
|
||||||
|
for (int32_t iii=0; iii<NB_MAX_INPUT; iii++) {
|
||||||
|
inputIsPressed[iii] = false;
|
||||||
|
}
|
||||||
|
m_grabAllEvent = false;
|
||||||
|
// start X11 thread ...
|
||||||
|
DirectFB_Init(argc, argv);
|
||||||
|
//start the basic thread :
|
||||||
|
eSystem::Init();
|
||||||
|
// Run ...
|
||||||
|
DirectFB_Run();
|
||||||
|
// UnInit:
|
||||||
|
DirectFB_UnInit();
|
||||||
|
// close X11 :
|
||||||
|
guiInterface::Stop();
|
||||||
|
// uninit ALL :
|
||||||
|
eSystem::UnInit();
|
||||||
|
EWOL_INFO("Main (STOP)");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void guiInterface::ForceOrientation(ewol::orientation_te orientation)
|
||||||
|
{
|
||||||
|
// nothing to do ...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
static void init(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
|
||||||
|
glLightfv(GL_LIGHT0, GL_POSITION, pos);
|
||||||
|
glEnable(GL_CULL_FACE);
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glEnable(GL_LIGHT0);
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
glShadeModel(GL_SMOOTH);
|
||||||
|
|
||||||
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
|
||||||
|
for (i=1; i<argc; i++)
|
||||||
|
{
|
||||||
|
if (strcmp(argv[i],"-info") == 0)
|
||||||
|
{
|
||||||
|
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
|
||||||
|
printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
|
||||||
|
printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
|
||||||
|
printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i],"-exit") == 0)
|
||||||
|
{
|
||||||
|
autoexit = 30;
|
||||||
|
printf("Auto Exit after %i seconds.\n", autoexit );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// make the gears
|
||||||
|
gear1 = gear(1.0, 4.0, 1.0, 20, 0.7, red);
|
||||||
|
gear2 = gear(0.5, 2.0, 2.0, 10, 0.7, green);
|
||||||
|
gear3 = gear(1.3, 2.0, 0.5, 10, 0.7, blue);
|
||||||
|
}
|
||||||
|
*/
|
Loading…
x
Reference in New Issue
Block a user