diff options
Diffstat (limited to 'tags/Version Original/ARToolkit/lib/SRC/Gl/gsub.c')
-rwxr-xr-x | tags/Version Original/ARToolkit/lib/SRC/Gl/gsub.c | 1714 |
1 files changed, 0 insertions, 1714 deletions
diff --git a/tags/Version Original/ARToolkit/lib/SRC/Gl/gsub.c b/tags/Version Original/ARToolkit/lib/SRC/Gl/gsub.c deleted file mode 100755 index 8d909a2..0000000 --- a/tags/Version Original/ARToolkit/lib/SRC/Gl/gsub.c +++ /dev/null @@ -1,1714 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#if defined(_WIN32) -#include <windows.h> -#include <string.h> -#endif -#ifndef __APPLE__ -# include <GL/glut.h> -# ifdef GL_VERSION_1_2 -# include <GL/glext.h> -# endif -#else -# include <GLUT/glut.h> -# include <OpenGL/glext.h> -#endif -#include <AR/config.h> -#include <AR/param.h> -#include <AR/ar.h> -#include <AR/gsub.h> - -#ifndef GL_ABGR -# define GL_ABGR GL_ABGR_EXT -#endif -#ifndef GL_BGRA -# define GL_BGRA GL_BGRA_EXT -#endif -#ifndef GL_BGR -# define GL_BGR GL_BGR_EXT -#endif -#ifndef GL_RGBA -# define GL_RGBA GL_RGBA_EXT -#endif -#ifndef GL_RGB -# define GL_RGB GL_RGB_EXT -#endif - -#ifdef AR_OPENGL_TEXTURE_RECTANGLE -# if defined(GL_TEXTURE_RECTANGLE_EXT) -# define AR_TEXTURE_RECTANGLE GL_TEXTURE_RECTANGLE_EXT -# elif defined(GL_TEXTURE_RECTANGLE_NV) -# define AR_TEXTURE_RECTANGLE GL_TEXTURE_RECTANGLE_NV -# else -# undef AR_OPENGL_TEXTURE_RECTANGLE -# endif -#endif - -#define MINIWIN_MAX 8 -#define REVERSE_LR 1 -#define LEFTEYE 1 -#define RIGHTEYE 2 -#define GMINI 2 - -int argDrawMode = DEFAULT_DRAW_MODE; -int argTexmapMode = DEFAULT_DRAW_TEXTURE_IMAGE; - - -static ARParam gCparam; -static ARSParam gsCparam; -static double gl_cpara[16]; -//static double gl_cparaL[16]; -//static double gl_cparaR[16]; -static double gl_lpara[16]; -static double gl_rpara[16]; -static int gl_hmd_flag = 0; -static int gl_hmd_para_flag = 0; -static int gl_stereo_flag = 0; -//static int gl_twin_flag = 0; - -static double gZoom; -static int gXsize, gYsize; -static int gMiniXnum, gMiniYnum; -static int gMiniXsize, gMiniYsize; -static int gWinXsize, gWinYsize; -static int gImXsize, gImYsize; -static int win; -static GLuint glid[4]; - -static void (*gMouseFunc)(int button, int state, int x, int y); -static void (*gKeyFunc)(unsigned char key, int x, int y); -static void (*gMainFunc)(void); - - -static void argInit2( int fullFlag ); -static void argInitLoop(void); -static void argInitStencil(void); -static void argSetStencil( int flag ); -static void argConvGLcpara2( double cparam[3][4], int width, int height, double gnear, double gfar, double m[16] ); - - -static int useTextureRectangle = 0; -static GLint maxRectangleTextureSize = 0; -static int tex1Xsize1 = 1; -static int tex1Xsize2 = 1; -static int tex1Ysize = 1; -static int tex2Xsize = 1; -static int tex2Ysize = 1; -#ifdef AR_OPENGL_TEXTURE_RECTANGLE -static void argDispImageTexRectangle( ARUint8 *image, int xwin, int ywin, int mode ); -#endif -static void argDispImageTex3( ARUint8 *image, int xwin, int ywin, int mode ); -static void argDispImageTex4( ARUint8 *image, int xwin, int ywin, int mode ); -static void argDispHalfImageTex( ARUint8 *image, int xwin, int ywin, int mode ); -static void argDispImageDrawPixels( ARUint8 *image, int xwin, int ywin ); -static void argDispHalfImageDrawPixels( ARUint8 *image, int xwin, int ywin ); - -void argInqSetting( int *hmdMode, - int *gMiniXnum2, int *gMiniYnum2, - void (**mouseFunc)(int button, int state, int x, int y), - void (**keyFunc)(unsigned char key, int x, int y), - void (**mainFunc)(void) ) -{ - *hmdMode = gl_hmd_flag; - *gMiniXnum2 = gMiniXnum; - *gMiniYnum2 = gMiniYnum; - *mouseFunc = gMouseFunc; - *keyFunc = gKeyFunc; - *mainFunc = gMainFunc; -} - -void argInit( ARParam *cparam, double zoom, int fullFlag, int xwin, int ywin, int hmd_flag ) -{ - int i; - - gl_hmd_flag = hmd_flag; - gZoom = zoom; - gImXsize = cparam->xsize; - gImYsize = cparam->ysize; - if( gl_hmd_flag == 0 ) { - gXsize = (double)cparam->xsize * gZoom; - gYsize = (double)cparam->ysize * gZoom; - } - else { - gXsize = AR_HMD_XSIZE; - gYsize = AR_HMD_YSIZE; - } - gMiniXsize = (double)cparam->xsize * gZoom / GMINI; - gMiniYsize = (double)cparam->ysize * gZoom / GMINI; - - if( xwin * ywin > MINIWIN_MAX ) { - if( xwin > MINIWIN_MAX ) xwin = MINIWIN_MAX; - ywin = MINIWIN_MAX / xwin; - } - gMiniXnum = xwin; - gMiniYnum = ywin; - gWinXsize = (gMiniXsize*gMiniXnum > gXsize)? - gMiniXsize*gMiniXnum: gXsize; - gWinYsize = gYsize + gMiniYsize*gMiniYnum; - - gCparam = *cparam; - for( i = 0; i < 4; i++ ) { - gCparam.mat[1][i] = (gCparam.ysize-1)*(gCparam.mat[2][i]) - gCparam.mat[1][i]; - } - argConvGLcpara( &gCparam, AR_GL_CLIP_NEAR, AR_GL_CLIP_FAR, gl_cpara ); - - argInit2( fullFlag ); -} - -static void argInit2( int fullFlag ) -{ - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); - glutInitWindowPosition(0, 0); - glutInitWindowSize(gWinXsize, gWinYsize); - win = glutCreateWindow(""); - if( fullFlag ) { - glutFullScreen(); - gWinXsize = glutGet(GLUT_SCREEN_WIDTH); - gWinYsize = glutGet(GLUT_SCREEN_HEIGHT); - } - -#ifdef AR_OPENGL_TEXTURE_RECTANGLE -#if defined(GL_TEXTURE_RECTANGLE_EXT) - if( glutExtensionSupported("GL_EXT_texture_rectangle") ) { - useTextureRectangle = 1; - glGetIntegerv(GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT, &maxRectangleTextureSize); - } -#elif defined(GL_TEXTURE_RECTANGLE_NV) - if( glutExtensionSupported("GL_NV_texture_rectangle") ) { - useTextureRectangle = 1; - glGetIntegerv(GL_MAX_RECTANGLE_TEXTURE_SIZE_NV, &maxRectangleTextureSize); - } -#endif -#endif - - gMouseFunc = NULL; - gKeyFunc = NULL; - gMainFunc = NULL; - - - glGenTextures(4, glid); - glBindTexture( GL_TEXTURE_2D, glid[0] ); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); - glBindTexture( GL_TEXTURE_2D, glid[1] ); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); - glBindTexture( GL_TEXTURE_2D, glid[2] ); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); - - if( gImXsize > 512 ) { - tex1Xsize1 = 512; - tex1Xsize2 = 1; - while( tex1Xsize2 < gImXsize - tex1Xsize1 ) tex1Xsize2 *= 2; - } - else { - tex1Xsize1 = 1; - while( tex1Xsize1 < gImXsize ) tex1Xsize1 *= 2; - } - tex1Ysize = 1; - while( tex1Ysize < gImYsize ) tex1Ysize *= 2; - - tex2Xsize = 1; - while( tex2Xsize < gImXsize/2 ) tex2Xsize *= 2; - tex2Ysize = 1; - while( tex2Ysize < gImYsize/2 ) tex2Ysize *= 2; -} - -void argCleanup( void ) -{ -/* - glutDestroyWindow( win ); -*/ -} - -void argSwapBuffers( void ) -{ - glutSwapBuffers(); -} - -void argMainLoop( void (*mouseFunc)(int button, int state, int x, int y), - void (*keyFunc)(unsigned char key, int x, int y), - void (*mainFunc)(void) ) -{ - gMouseFunc = mouseFunc; - gKeyFunc = keyFunc; - gMainFunc = mainFunc; - - glutDisplayFunc( argInitLoop ); - glutMainLoop(); -} - -static void argInitLoop(void) -{ - arUtilSleep( 500 ); - - argDrawMode2D(); - if( gl_hmd_flag || gl_stereo_flag ) { - glClearColor( 0.0, 0.0, 0.0, 0.0 ); - glClear(GL_COLOR_BUFFER_BIT); - argInitStencil(); - argSwapBuffers(); - } - - glClearColor( 0.0, 0.0, 0.0, 0.0 ); - glClear(GL_COLOR_BUFFER_BIT); - argSwapBuffers(); - glClear(GL_COLOR_BUFFER_BIT); - argSwapBuffers(); - - glutKeyboardFunc( gKeyFunc ); - glutMouseFunc( gMouseFunc ); - glutDisplayFunc( gMainFunc ); - glutIdleFunc( gMainFunc ); -} - -void argDrawMode2D( void ) -{ - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, gWinXsize, 0, gWinYsize, -1.0, 1.0); - glViewport(0, 0, gWinXsize, gWinYsize); - - argSetStencil( 0 ); -} - -void argDraw2dLeft( void ) -{ - if( gl_hmd_flag == 0 && gl_stereo_flag == 0 ) return; - - argSetStencil( LEFTEYE ); -} - -void argDraw2dRight( void ) -{ - if( gl_hmd_flag == 0 && gl_stereo_flag == 0 ) return; - - argSetStencil( RIGHTEYE ); -} - -void argDrawMode3D( void ) -{ - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void argDraw3dLeft( void ) -{ - if( gl_hmd_flag == 0 || gl_hmd_para_flag == 0 ) return; - - glViewport(0, gWinYsize-AR_HMD_YSIZE, AR_HMD_XSIZE, AR_HMD_YSIZE); - argSetStencil( LEFTEYE ); - glMatrixMode(GL_PROJECTION); - glLoadMatrixd( gl_lpara ); -} - -void argDraw3dRight( void ) -{ - if( gl_hmd_flag == 0 || gl_hmd_para_flag == 0 ) return; - - glViewport(0, gWinYsize-AR_HMD_YSIZE, AR_HMD_XSIZE, AR_HMD_YSIZE); - argSetStencil( RIGHTEYE ); - glMatrixMode(GL_PROJECTION); - glLoadMatrixd( gl_rpara ); -} - - -void argDraw3dCamera( int xwin, int ywin ) -{ - if( xwin == 0 && ywin == 0 ) { - glViewport(0, gWinYsize-(int)(gZoom*gImYsize), - (int)(gZoom*gImXsize), (int)(gZoom*gImYsize)); - } - else { - glViewport((xwin-1)*gMiniXsize, gWinYsize-gYsize-ywin*gMiniYsize, - gMiniXsize, gMiniYsize); - } - - argSetStencil( 0 ); - - glMatrixMode(GL_PROJECTION); - glLoadMatrixd( gl_cpara ); -} - - -void argConvGlpara( double para[3][4], double gl_para[16] ) -{ - int i, j; - - for( j = 0; j < 3; j++ ) { - for( i = 0; i < 4; i++ ) { - gl_para[i*4+j] = para[j][i]; - } - } - gl_para[0*4+3] = gl_para[1*4+3] = gl_para[2*4+3] = 0.0; - gl_para[3*4+3] = 1.0; -} - - -void argDispImage( ARUint8 *image, int xwin, int ywin ) -{ - if( argDrawMode == AR_DRAW_BY_GL_DRAW_PIXELS ) { - argDispImageDrawPixels( image, xwin, ywin ); - } - else { - if( xwin == 0 && ywin == 0 ) { - glScissor(0, gWinYsize-(int)(gZoom*gImYsize), - (int)(gZoom*gImXsize), (int)(gZoom*gImYsize)); - } - else { - glScissor((xwin-1)*gMiniXsize, gWinYsize-gYsize-ywin*gMiniYsize, - gMiniXsize, gMiniYsize); - } - glEnable( GL_SCISSOR_TEST ); - /* glDisable( GL_DEPTH_TEST ); */ - if( useTextureRectangle - && gImXsize < maxRectangleTextureSize - && gImYsize < maxRectangleTextureSize ) { -#ifdef AR_OPENGL_TEXTURE_RECTANGLE - argDispImageTexRectangle( image, xwin, ywin, 0 ); -#endif - } - else { - if( gImXsize > tex1Xsize1 ) - argDispImageTex3( image, xwin, ywin, 0 ); - else - argDispImageTex4( image, xwin, ywin, 0 ); - } - glDisable( GL_SCISSOR_TEST ); - } -} - - -static void argDispImageDrawPixels( ARUint8 *image, int xwin, int ywin ) -{ - float sx, sy; - GLfloat zoom; - - if( xwin == 0 && ywin == 0 ) { - zoom = gZoom; - sx = 0; - sy = gWinYsize - 0.5; - } - else if( xwin == 1 && ywin == 0 ) { - zoom = gZoom; - sx = gXsize; - sy = gWinYsize - 0.5; - } - else { - zoom = gZoom / (double)GMINI; - sx = (xwin-1)*gMiniXsize; - sy = gWinYsize - gYsize - (ywin-1)*gMiniYsize - 0.5; - } - glDisable(GL_TEXTURE_2D); - glPixelZoom( zoom, -zoom); - glRasterPos3f( sx, sy, -1.0 ); - -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glDrawPixels( gImXsize, gImYsize, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glDrawPixels( gImXsize, gImYsize, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glDrawPixels( gImXsize, gImYsize, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glDrawPixels( gImXsize, gImYsize, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glDrawPixels( gImXsize, gImYsize, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glDrawPixels( gImXsize, gImYsize, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glDrawPixels( gImXsize, gImYsize, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glDrawPixels( gImXsize, gImYsize, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glDrawPixels( gImXsize, gImYsize, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glDrawPixels( gImXsize, gImYsize, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glDrawPixels( gImXsize, gImYsize, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glDrawPixels( gImXsize, gImYsize, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif -} - -#ifdef AR_OPENGL_TEXTURE_RECTANGLE -static void argDispImageTexRectangle( ARUint8 *image, int xwin, int ywin, int mode ) -{ - static int initf = 1; - static int flag[3][MINIWIN_MAX+2][2]; - static int listIndex[3][MINIWIN_MAX+2][2]; - static int old_size_adjust_factor = -1; - double *dist_factor; - double px, py, qy, z; - double x1, x2; - double y1, y2; - double xx1, xx2; - double yy1, yy2; - int size_adjust_factor; - int list, win; - int i, j; - - switch( mode ) { - case 0: dist_factor = &(gCparam.dist_factor[0]); break; - case 1: dist_factor = &(gsCparam.dist_factorL[0]); break; - case 2: dist_factor = &(gsCparam.dist_factorR[0]); break; - default: return; - } - - if( initf ) { - for(j=0;j<3;j++) { - for(i=0;i<MINIWIN_MAX+2;i++) flag[j][i][0] = flag[j][i][1] = 1; - } - initf = 0; - } - if( argTexmapMode == AR_DRAW_TEXTURE_HALF_IMAGE ) { - size_adjust_factor = 2; - list = 1; - } - else { - size_adjust_factor = 1; - list = 0; - } - if( xwin == 0 && ywin == 0 ) win = 0; - else if( xwin == 1 && ywin == 0 ) win = 1; - else win = gMiniXnum * (ywin-1) + xwin + 1; - - glEnable( AR_TEXTURE_RECTANGLE ); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - - - glBindTexture( AR_TEXTURE_RECTANGLE, glid[3] ); -#ifdef APPLE_TEXTURE_FAST_TRANSFER - glTexParameterf(AR_TEXTURE_RECTANGLE, GL_TEXTURE_PRIORITY, 0.0); - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, 1); -#endif - glPixelStorei( GL_UNPACK_ROW_LENGTH, gImXsize*size_adjust_factor ); - if( size_adjust_factor == old_size_adjust_factor ) { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glTexSubImage2D( AR_TEXTURE_RECTANGLE, 0, 0, 0, gImXsize, gImYsize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_REV_8_8_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - } - else { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGBA, gImXsize, gImYsize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGBA, gImXsize, gImYsize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGBA, gImXsize, gImYsize/size_adjust_factor, 0, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGB, gImXsize, gImYsize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGB, gImXsize, gImYsize/size_adjust_factor, 0, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGBA, gImXsize, gImYsize/size_adjust_factor, 0, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGB, gImXsize, gImYsize/size_adjust_factor, 0, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_LUMINANCE, gImXsize, gImYsize/size_adjust_factor, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGB, gImXsize, gImYsize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGB, gImXsize, gImYsize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGB, gImXsize, gImYsize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glTexImage2D( AR_TEXTURE_RECTANGLE, 0, GL_RGB, gImXsize, gImYsize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - old_size_adjust_factor = size_adjust_factor; - } - - if( flag[mode][win][list] ) { - listIndex[mode][win][list] = glGenLists(1); - glNewList(listIndex[mode][win][list], GL_COMPILE_AND_EXECUTE); - - z = -1.0; - qy = gImYsize * 0 / 20.0; - for( j = 1; j <= 20; j++ ) { - py = qy; - qy = gImYsize * j / 20.0; - - glBegin( GL_QUAD_STRIP ); - for( i = 0; i <= 20; i++ ) { - px = gImXsize * i / 20.0; - - arParamObserv2Ideal( dist_factor, px, py, &x1, &y1 ); - arParamObserv2Ideal( dist_factor, px, qy, &x2, &y2 ); - - if( xwin == 0 && ywin == 0 ) { - xx1 = x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - } - else if( xwin == 1 && ywin == 0 ) { - xx1 = gXsize + x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = gXsize + x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - } - else { - xx1 = (xwin-1)*gMiniXsize + x1*gZoom/(double)GMINI; - xx2 = (xwin-1)*gMiniXsize + x2*gZoom/(double)GMINI; - yy1 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y1*gZoom/(double)GMINI; - yy2 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y2*gZoom/(double)GMINI; - } - - glTexCoord2d( px, py/size_adjust_factor ); glVertex3d( xx1, yy1, z ); - glTexCoord2d( px, qy/size_adjust_factor ); glVertex3d( xx2, yy2, z ); - } - glEnd(); - } - glEndList(); - flag[mode][win][list] = 0; - } - else { - glCallList( listIndex[mode][win][list] ); - } - - glBindTexture( AR_TEXTURE_RECTANGLE, 0 ); - glDisable( AR_TEXTURE_RECTANGLE ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); -} -#endif - -#ifndef _WIN32 -static void argDispImageTex4( ARUint8 *image, int xwin, int ywin, int mode ) -#else -static void argDispImageTex4( ARUint8 *wimage, int xwin, int ywin, int mode ) -#endif -{ - static int initf = 1; - static int flag[3][MINIWIN_MAX+2][2]; - static int listIndex[3][MINIWIN_MAX+2][2]; - static int old_size_adjust_factor = -1; -#ifdef _WIN32 - static ARUint8 *image = NULL; -#endif - double *dist_factor; - double tsx, tsy, tex, tey; - double px, py, qx, qy, z; - double x1, x2, x3, x4; - double y1, y2, y3, y4; - double xx1, xx2, xx3, xx4; - double yy1, yy2, yy3, yy4; - int size_adjust_factor; - int list, win; - int i, j; - - switch( mode ) { - case 0: dist_factor = &(gCparam.dist_factor[0]); break; - case 1: dist_factor = &(gsCparam.dist_factorL[0]); break; - case 2: dist_factor = &(gsCparam.dist_factorR[0]); break; - default: return; - } - -#ifdef _WIN32 - if( image == NULL ) { - arMalloc(image,ARUint8,gImXsize*tex1Ysize*AR_PIX_SIZE_DEFAULT); - } - memcpy(image, wimage, gImXsize*gImYsize*AR_PIX_SIZE_DEFAULT); -#endif - - if( initf ) { - for(j=0;j<3;j++) { - for(i=0;i<MINIWIN_MAX+2;i++) flag[j][i][0] = flag[j][i][1] = 1; - } - initf = 0; - } - if( argTexmapMode == AR_DRAW_TEXTURE_HALF_IMAGE ) { - size_adjust_factor = 2; - list = 1; - } - else { - size_adjust_factor = 1; - list = 0; - } - if( xwin == 0 && ywin == 0 ) win = 0; - else if( xwin == 1 && ywin == 0 ) win = 1; - else win = gMiniXnum * (ywin-1) + xwin + 1; - - glEnable( GL_TEXTURE_2D ); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - - glBindTexture( GL_TEXTURE_2D, glid[0] ); -#ifdef APPLE_TEXTURE_FAST_TRANSFER - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.0); - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, 1); -#endif - glPixelStorei( GL_UNPACK_ROW_LENGTH, gImXsize*size_adjust_factor ); - - if( size_adjust_factor == old_size_adjust_factor ) { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - } - else { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - old_size_adjust_factor = size_adjust_factor; - } - - if( flag[mode][win][list] ) { - listIndex[mode][win][list] = glGenLists(1); - glNewList(listIndex[mode][win][list], GL_COMPILE_AND_EXECUTE); - - z = -1.0; - qy = gImYsize * 0 / 20.0; - tey = ((double)gImYsize / (double)tex1Ysize) * (double)0 / 20.0; - for( j = 1; j <= 20; j++ ) { - py = qy; - tsy = tey; - qy = gImYsize * j / 20.0; - tey = ((double)gImYsize / (double)tex1Ysize) * (double)j / 20.0; - - qx = gImXsize * 0 / 20.0; - tex = ((double)gImXsize / (double)(tex1Xsize1)) * (double)0 / 20.0; - for( i = 1; i <= 20; i++ ) { - px = qx; - tsx = tex; - qx = gImXsize * i / 20.0; - tex = ((double)gImXsize / (double)(tex1Xsize1)) * (double)i / 20.0; - - arParamObserv2Ideal( dist_factor, px, py, &x1, &y1 ); - arParamObserv2Ideal( dist_factor, qx, py, &x2, &y2 ); - arParamObserv2Ideal( dist_factor, qx, qy, &x3, &y3 ); - arParamObserv2Ideal( dist_factor, px, qy, &x4, &y4 ); - - if( xwin == 0 && ywin == 0 ) { - xx1 = x1 * gZoom ; - yy1 = gWinYsize - y1 * gZoom; - xx2 = x2 * gZoom ; - yy2 = gWinYsize - y2 * gZoom; - xx3 = x3 * gZoom ; - yy3 = gWinYsize - y3 * gZoom; - xx4 = x4 * gZoom ; - yy4 = gWinYsize - y4 * gZoom; - } - else if( xwin == 1 && ywin == 0 ) { - xx1 = gXsize + x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = gXsize + x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - xx3 = gXsize + x3 * gZoom; - yy3 = gWinYsize - y3 * gZoom; - xx4 = gXsize + x4 * gZoom; - yy4 = gWinYsize - y4 * gZoom; - } - else { - xx1 = (xwin-1)*gMiniXsize + x1*gZoom/(double)GMINI; - xx2 = (xwin-1)*gMiniXsize + x2*gZoom/(double)GMINI; - xx3 = (xwin-1)*gMiniXsize + x3*gZoom/(double)GMINI; - xx4 = (xwin-1)*gMiniXsize + x4*gZoom/(double)GMINI; - yy1 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y1*gZoom/(double)GMINI; - yy2 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y2*gZoom/(double)GMINI; - yy3 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y3*gZoom/(double)GMINI; - yy4 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y4*gZoom/(double)GMINI; - } - - glBegin( GL_QUADS ); - glTexCoord2d( tsx, tsy ); glVertex3d( xx1, yy1, z ); - glTexCoord2d( tex, tsy ); glVertex3d( xx2, yy2, z ); - glTexCoord2d( tex, tey ); glVertex3d( xx3, yy3, z ); - glTexCoord2d( tsx, tey ); glVertex3d( xx4, yy4, z ); - glEnd(); - } - } - glEndList(); - flag[mode][win][list] = 0; - } - else { - glCallList( listIndex[mode][win][list] ); - } - - glBindTexture( GL_TEXTURE_2D, 0 ); - glDisable( GL_TEXTURE_2D ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); -} - -#ifndef _WIN32 -static void argDispImageTex3( ARUint8 *image, int xwin, int ywin, int mode ) -#else -static void argDispImageTex3( ARUint8 *wimage, int xwin, int ywin, int mode ) -#endif -{ - static int initf = 1; - static int flag[3][MINIWIN_MAX+2][2]; - static int listIndex[3][MINIWIN_MAX+2][2]; - static int old_size_adjust_factor = -1; -#ifdef _WIN32 - static ARUint8 *image = NULL; -#endif - double *dist_factor; - double tsx, tsy, tex, tey; - double px, py, qx, qy, z; - double x1, x2, x3, x4; - double y1, y2, y3, y4; - double xx1, xx2, xx3, xx4; - double yy1, yy2, yy3, yy4; - int size_adjust_factor; - int win, list; - int i, j; - - switch( mode ) { - case 0: dist_factor = &(gCparam.dist_factor[0]); break; - case 1: dist_factor = &(gsCparam.dist_factorL[0]); break; - case 2: dist_factor = &(gsCparam.dist_factorR[0]); break; - default: return; - } - -#ifdef _WIN32 - if( image == NULL ) { - arMalloc(image,ARUint8,gImXsize*tex1Ysize*AR_PIX_SIZE_DEFAULT); - } - memcpy(image, wimage, gImXsize*gImYsize*AR_PIX_SIZE_DEFAULT); -#endif - - if( initf ) { - for(j=0;j<3;j++) { - for(i=0;i<=MINIWIN_MAX;i++) flag[j][i][0] = flag[j][i][1] = 1; - } - initf = 0; - } - if( argTexmapMode == AR_DRAW_TEXTURE_HALF_IMAGE ) { - size_adjust_factor = 2; - list = 1; - } - else { - size_adjust_factor = 1; - list = 0; - } - if( xwin == 0 && ywin == 0 ) win = 0; - else if( xwin == 1 && ywin == 0 ) win = 1; - else win = gMiniXnum * (ywin-1) + xwin + 1; - - glEnable( GL_TEXTURE_2D ); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - - glBindTexture( GL_TEXTURE_2D, glid[0] ); -#ifdef APPLE_TEXTURE_FAST_TRANSFER - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.0); - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, 1); -#endif - glPixelStorei( GL_UNPACK_ROW_LENGTH, gImXsize*size_adjust_factor ); - - if( size_adjust_factor == old_size_adjust_factor ) { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize1, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - } - else { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - } - - if( flag[mode][win][list] ) { - listIndex[mode][win][list] = glGenLists(2); - glNewList(listIndex[mode][win][list], GL_COMPILE_AND_EXECUTE); - - z = -1.0; - qy = gImYsize * 0 / 20.0; - tey = ((double)gImYsize / (double)tex1Ysize) * (double)0 / 20.0; - for( j = 1; j <= 20; j++ ) { - py = qy; - tsy = tey; - qy = gImYsize * j / 20.0; - tey = ((double)gImYsize / (double)tex1Ysize) * (double)j / 20.0; - - qx = tex1Xsize1 * 0 / 16.0; - tex = (double)0 / 16.0; - for( i = 1; i <= 16; i++ ) { - px = qx; - tsx = tex; - qx = tex1Xsize1 * i / 16.0; - tex = (double)i / 16.0; - - arParamObserv2Ideal( dist_factor, px, py, &x1, &y1 ); - arParamObserv2Ideal( dist_factor, qx, py, &x2, &y2 ); - arParamObserv2Ideal( dist_factor, qx, qy, &x3, &y3 ); - arParamObserv2Ideal( dist_factor, px, qy, &x4, &y4 ); - - if( x2 < x1 ) continue; - if( x4 > x3 ) continue; - if( y4 < y1 ) continue; - if( y3 < y2 ) continue; - if( x2 < 0 || x3 < 0 ) continue; - if( x1 > gImXsize || x4 > gImXsize ) continue; - if( y4 < 0 || y3 < 0 ) continue; - if( y1 > gImYsize || y2 > gImXsize ) continue; - - if( xwin == 0 && ywin == 0 ) { - xx1 = x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - xx3 = x3 * gZoom; - yy3 = gWinYsize - y3 * gZoom; - xx4 = x4 * gZoom; - yy4 = gWinYsize - y4 * gZoom; - } - else if( xwin == 1 && ywin == 0 ) { - xx1 = gXsize + x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = gXsize + x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - xx3 = gXsize + x3 * gZoom; - yy3 = gWinYsize - y3 * gZoom; - xx4 = gXsize + x4 * gZoom; - yy4 = gWinYsize - y4 * gZoom; - } - else { - xx1 = (xwin-1)*gMiniXsize + x1*gZoom/(double)GMINI; - xx2 = (xwin-1)*gMiniXsize + x2*gZoom/(double)GMINI; - xx3 = (xwin-1)*gMiniXsize + x3*gZoom/(double)GMINI; - xx4 = (xwin-1)*gMiniXsize + x4*gZoom/(double)GMINI; - yy1 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y1*gZoom/(double)GMINI; - yy2 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y2*gZoom/(double)GMINI; - yy3 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y3*gZoom/(double)GMINI; - yy4 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y4*gZoom/(double)GMINI; - } - - glBegin( GL_QUADS ); - glTexCoord2d( tsx, tsy ); glVertex3d( xx1, yy1, z ); - glTexCoord2d( tex, tsy ); glVertex3d( xx2, yy2, z ); - glTexCoord2d( tex, tey ); glVertex3d( xx3, yy3, z ); - glTexCoord2d( tsx, tey ); glVertex3d( xx4, yy4, z ); - glEnd(); - } - } - glEndList(); - } - else { - glCallList( listIndex[mode][win][list] ); - } - - glBindTexture( GL_TEXTURE_2D, glid[1] ); -#ifdef APPLE_TEXTURE_FAST_TRANSFER - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.0); - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, 1); -#endif - - if( size_adjust_factor == old_size_adjust_factor ) { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_ABGR, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_BGRA, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_BGR, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_RGBA, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_RGB, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_LUMINANCE, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex1Xsize2, tex1Ysize/size_adjust_factor, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - } - else { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_ABGR, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_BGR, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_RGBA, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_RGB, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image+tex1Xsize1*AR_PIX_SIZE_DEFAULT ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - old_size_adjust_factor = size_adjust_factor; - } - - if( flag[mode][win][list] ) { - glNewList(listIndex[mode][win][list]+1, GL_COMPILE_AND_EXECUTE); - - z = -1.0; - qy = gImYsize * 0 / 20.0; - tey = ((double)gImYsize / (double)tex1Ysize) * (double)0 / 20.0; - for( j = 1; j <= 20; j++ ) { - py = qy; - tsy = tey; - qy = gImYsize * j / 20.0; - tey = ((double)gImYsize / (double)tex1Ysize) * (double)j / 20.0; - - qx = tex1Xsize1 + (gImXsize-tex1Xsize1) * 0 / 4.0; - tex = ((double)(gImXsize-tex1Xsize1) / (double)tex1Xsize2) * 0 / 4.0; - for( i = 1; i <= 4; i++ ) { - px = qx; - tsx = tex; - qx = tex1Xsize1 + (gImXsize-tex1Xsize1) * i / 4.0; - tex = ((double)(gImXsize-tex1Xsize1) / (double)tex1Xsize2) * i / 4.0; - - arParamObserv2Ideal( dist_factor, px, py, &x1, &y1 ); - arParamObserv2Ideal( dist_factor, qx, py, &x2, &y2 ); - arParamObserv2Ideal( dist_factor, qx, qy, &x3, &y3 ); - arParamObserv2Ideal( dist_factor, px, qy, &x4, &y4 ); - - if( x2 < x1 ) continue; - if( x4 > x3 ) continue; - if( y4 < y1 ) continue; - if( y3 < y2 ) continue; - if( x2 < 0 || x3 < 0 ) continue; - if( x1 > gImXsize || x4 > gImXsize ) continue; - if( y4 < 0 || y3 < 0 ) continue; - if( y1 > gImYsize || y2 > gImXsize ) continue; - - if( xwin == 0 && ywin == 0 ) { - xx1 = x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - xx3 = x3 * gZoom; - yy3 = gWinYsize - y3 * gZoom; - xx4 = x4 * gZoom; - yy4 = gWinYsize - y4 * gZoom; - } - else if( xwin == 1 && ywin == 0 ) { - xx1 = gXsize + x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = gXsize + x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - xx3 = gXsize + x3 * gZoom; - yy3 = gWinYsize - y3 * gZoom; - xx4 = gXsize + x4 * gZoom; - yy4 = gWinYsize - y4 * gZoom; - } - else { - xx1 = (xwin-1)*gMiniXsize + x1*gZoom/(double)GMINI; - xx2 = (xwin-1)*gMiniXsize + x2*gZoom/(double)GMINI; - xx3 = (xwin-1)*gMiniXsize + x3*gZoom/(double)GMINI; - xx4 = (xwin-1)*gMiniXsize + x4*gZoom/(double)GMINI; - yy1 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y1*gZoom/(double)GMINI; - yy2 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y2*gZoom/(double)GMINI; - yy3 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y3*gZoom/(double)GMINI; - yy4 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y4*gZoom/(double)GMINI; - } - - glBegin( GL_QUADS ); - glTexCoord2d( tsx, tsy ); glVertex3d( xx1, yy1, z ); - glTexCoord2d( tex, tsy ); glVertex3d( xx2, yy2, z ); - glTexCoord2d( tex, tey ); glVertex3d( xx3, yy3, z ); - glTexCoord2d( tsx, tey ); glVertex3d( xx4, yy4, z ); - glEnd(); - } - } - glEndList(); - flag[mode][win][list] = 0; - } - else { - glCallList( listIndex[mode][win][list]+1 ); - } - - glBindTexture( GL_TEXTURE_2D, 0 ); - glDisable( GL_TEXTURE_2D ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); -} - -void argDispHalfImage( ARUint8 *image, int xwin, int ywin ) -{ - if( argDrawMode == AR_DRAW_BY_GL_DRAW_PIXELS ) { - argDispHalfImageDrawPixels( image, xwin, ywin ); - } - else { - if( xwin == 0 && ywin == 0 ) { - glScissor(0, gWinYsize-(int)(gZoom*gImYsize), - (int)(gZoom*gImXsize), (int)(gZoom*gImYsize)); - } - else { - glScissor((xwin-1)*gMiniXsize, gWinYsize-gYsize-ywin*gMiniYsize, - gMiniXsize, gMiniYsize); - } - glEnable( GL_SCISSOR_TEST ); - /* glDisable( GL_DEPTH_TEST ); */ - argDispHalfImageTex( image, xwin, ywin, 0 ); - glDisable( GL_SCISSOR_TEST ); - } -} - -static void argDispHalfImageDrawPixels( ARUint8 *image, int xwin, int ywin ) -{ - float sx, sy; - GLfloat zoom; - - if( xwin == 0 && ywin == 0 ) { - zoom = gZoom * 2.0; - sx = 0; - sy = gWinYsize - 0.5; - } - if( xwin == 1 && ywin == 0 ) { - zoom = gZoom * 2.0; - sx = gXsize; - sy = gWinYsize - 0.5; - } - else { - zoom = gZoom / (double)GMINI * 2.0; - sx = (xwin-1)*gMiniXsize; - sy = gWinYsize - gYsize - (ywin-1)*gMiniYsize - 0.5; - } - glPixelZoom( zoom, -zoom); - glRasterPos3f( sx, sy, -1.0 ); - -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glDrawPixels( gImXsize/2, gImYsize/2, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glDrawPixels( gImXsize/2, gImYsize/2, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glDrawPixels( gImXsize/2, gImYsize/2, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glDrawPixels( gImXsize/2, gImYsize/2, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glDrawPixels( gImXsize/2, gImYsize/2, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glDrawPixels( gImXsize/2, gImYsize/2, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glDrawPixels( gImXsize/2, gImYsize/2, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glDrawPixels( gImXsize/2, gImYsize/2, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glDrawPixels( gImXsize/2, gImYsize/2, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glDrawPixels( gImXsize/2, gImYsize/2, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glDrawPixels( gImXsize/2, gImYsize/2, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glDrawPixels( gImXsize/2, gImYsize/2, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif -} - -#ifndef _WIN32 -static void argDispHalfImageTex( ARUint8 *image, int xwin, int ywin, int mode ) -#else -static void argDispHalfImageTex( ARUint8 *wimage, int xwin, int ywin, int mode ) -#endif -{ - static int initf = 1; - static int flag[3][MINIWIN_MAX+2]; - static int listIndex[3][MINIWIN_MAX+2]; -#ifdef _WIN32 - static ARUint8 *image = NULL; -#endif - double *dist_factor; - double tsx, tsy, tex, tey; - double px, py, qx, qy, z; - double x1, x2, x3, x4; - double y1, y2, y3, y4; - double xx1, xx2, xx3, xx4; - double yy1, yy2, yy3, yy4; - int win; - int i, j; - - switch( mode ) { - case 0: dist_factor = &(gCparam.dist_factor[0]); break; - case 1: dist_factor = &(gsCparam.dist_factorL[0]); break; - case 2: dist_factor = &(gsCparam.dist_factorR[0]); break; - default: return; - } - -#ifdef _WIN32 - if( image == NULL ) { - arMalloc(image,ARUint8,tex2Xsize*tex2Ysize*AR_PIX_SIZE_DEFAULT); - } - memcpy(image, wimage, gImXsize*gImYsize*AR_PIX_SIZE_DEFAULT/4); -#endif - - if( initf ) { - for(j=0;j<3;j++) { - for(i=0;i<=MINIWIN_MAX;i++) flag[j][i] = 1; - } - } - if( xwin == 0 && ywin == 0 ) win = 0; - else if( xwin == 1 && ywin == 0 ) win = 1; - else win = gMiniXnum * (ywin-1) + xwin + 1; - - glEnable( GL_TEXTURE_2D ); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - - glBindTexture( GL_TEXTURE_2D, glid[2] ); -#ifdef APPLE_TEXTURE_FAST_TRANSFER - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.0); - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, 1); -#endif - glPixelStorei( GL_UNPACK_ROW_LENGTH, gImXsize/2 ); - - if( initf == 0 ) { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, tex2Xsize, tex2Ysize, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - } - else { -#if (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex2Xsize, tex2Ysize, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex2Xsize, tex2Ysize, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex2Xsize, tex2Ysize, 0, GL_ABGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex2Xsize, tex2Ysize, 0, GL_BGRA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex2Xsize, tex2Ysize, 0, GL_BGR, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex2Xsize, tex2Ysize, 0, GL_RGBA, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB) - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex2Xsize, tex2Ysize, 0, GL_RGB, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO) - glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE, tex2Xsize, tex2Ysize, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, image ); -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex2Xsize, tex2Ysize, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex2Xsize, tex2Ysize, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# endif -#elif (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs) -# ifdef AR_BIG_ENDIAN - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex2Xsize, tex2Ysize, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, image ); -# else - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, tex2Xsize, tex2Ysize, 0, GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, image ); -# endif -#else -# error Unknown default pixel format defined in config.h -#endif - } - - if( flag[mode][win] ) { - listIndex[mode][win] = glGenLists(1); - glNewList(listIndex[mode][win], GL_COMPILE_AND_EXECUTE); - - z = -1.0; - qy = gImYsize * 0 / 20.0; - tey = ((double)gImYsize / (double)(tex2Ysize*2.0)) * (double)0 / 20.0; - for( j = 1; j <= 20; j++ ) { - py = qy; - tsy = tey; - qy = gImYsize * j / 20.0; - tey = ((double)gImYsize / (double)(tex2Ysize*2.0)) * (double)j / 20.0; - - qx = gImXsize * 0 / 20.0; - tex = ((double)gImXsize / (double)(tex2Xsize*2.0)) * (double)0 / 20.0; - for( i = 1; i <= 20; i++ ) { - px = qx; - tsx = tex; - qx = gImXsize * i / 20.0; - tex = ((double)gImXsize / (double)(tex2Xsize*2.0)) * (double)i / 20.0; - - arParamObserv2Ideal( dist_factor, px, py, &x1, &y1 ); - arParamObserv2Ideal( dist_factor, qx, py, &x2, &y2 ); - arParamObserv2Ideal( dist_factor, qx, qy, &x3, &y3 ); - arParamObserv2Ideal( dist_factor, px, qy, &x4, &y4 ); - - if( xwin == 0 && ywin == 0 ) { - xx1 = x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - xx3 = x3 * gZoom; - yy3 = gWinYsize - y3 * gZoom; - xx4 = x4 * gZoom; - yy4 = gWinYsize - y4 * gZoom; - } - else if( xwin == 1 && ywin == 0 ) { - xx1 = gXsize + x1 * gZoom; - yy1 = gWinYsize - y1 * gZoom; - xx2 = gXsize + x2 * gZoom; - yy2 = gWinYsize - y2 * gZoom; - xx3 = gXsize + x3 * gZoom; - yy3 = gWinYsize - y3 * gZoom; - xx4 = gXsize + x4 * gZoom; - yy4 = gWinYsize - y4 * gZoom; - } - else { - xx1 = (xwin-1)*gMiniXsize + x1*gZoom/(double)GMINI; - xx2 = (xwin-1)*gMiniXsize + x2*gZoom/(double)GMINI; - xx3 = (xwin-1)*gMiniXsize + x3*gZoom/(double)GMINI; - xx4 = (xwin-1)*gMiniXsize + x4*gZoom/(double)GMINI; - yy1 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y1*gZoom/(double)GMINI; - yy2 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y2*gZoom/(double)GMINI; - yy3 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y3*gZoom/(double)GMINI; - yy4 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y4*gZoom/(double)GMINI; - } - - glBegin( GL_QUADS ); - glTexCoord2d( tsx, tsy ); glVertex3d( xx1, yy1, z ); - glTexCoord2d( tex, tsy ); glVertex3d( xx2, yy2, z ); - glTexCoord2d( tex, tey ); glVertex3d( xx3, yy3, z ); - glTexCoord2d( tsx, tey ); glVertex3d( xx4, yy4, z ); - glEnd(); - } - } - glEndList(); - flag[mode][win] = 0; - } - else { - glCallList( listIndex[mode][win] ); - } - - initf = 0; - - glBindTexture( GL_TEXTURE_2D, 0 ); - glDisable( GL_TEXTURE_2D ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); -} - -void argDrawSquare( double vertex[4][2], int xwin, int ywin ) -{ - argLineSeg( vertex[0][0], vertex[0][1], - vertex[1][0], vertex[1][1], xwin, ywin ); - argLineSeg( vertex[1][0], vertex[1][1], - vertex[2][0], vertex[2][1], xwin, ywin ); - argLineSeg( vertex[2][0], vertex[2][1], - vertex[3][0], vertex[3][1], xwin, ywin ); - argLineSeg( vertex[3][0], vertex[3][1], - vertex[0][0], vertex[0][1], xwin, ywin ); -} - -void argLineSeg( double x1, double y1, double x2, double y2, int xwin, int ywin ) -{ - float ox, oy; - double xx1, yy1, xx2, yy2; - - if( argDrawMode == AR_DRAW_BY_TEXTURE_MAPPING ) { - xx1 = x1; yy1 = y1; - xx2 = x2; yy2 = y2; - } - else { - arParamIdeal2Observ( gCparam.dist_factor, x1, y1, &xx1, &yy1 ); - arParamIdeal2Observ( gCparam.dist_factor, x2, y2, &xx2, &yy2 ); - } - - xx1 *= gZoom; yy1 *= gZoom; - xx2 *= gZoom; yy2 *= gZoom; - - if( xwin == 0 && ywin == 0 ) { - ox = 0; - oy = gWinYsize-1; - glBegin(GL_LINES); - glVertex2f( ox+xx1, oy-yy1 ); - glVertex2f( ox+xx2, oy-yy2 ); - glEnd(); - } - else { - ox = (xwin-1)*gMiniXsize; - oy = gWinYsize - gYsize -(ywin-1)*gMiniYsize - 1; - glBegin(GL_LINES); - glVertex2f( ox+xx1/GMINI, oy-yy1/GMINI ); - glVertex2f( ox+xx2/GMINI, oy-yy2/GMINI ); - glEnd(); - } - - glFlush(); -} - -void argLineSegHMD( double x1, double y1, double x2, double y2 ) -{ - float ox, oy; - - ox = 0; - oy = gWinYsize - gYsize; - glBegin(GL_LINES); - glVertex2f( ox+x1, oy+y1 ); - glVertex2f( ox+x2, oy+y2 ); - glEnd(); -} - - -static void argInitStencil(void) -{ - int offset; - int i; - - glEnable(GL_STENCIL_TEST); - glClearStencil(0); - glClear(GL_STENCIL_BUFFER_BIT); - glLineWidth(1.0); - - offset = gWinYsize - gYsize; - -#if REVERSE_LR - glStencilFunc(GL_ALWAYS, LEFTEYE, LEFTEYE); - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - glBegin(GL_LINES); - for( i = 0; i < gYsize; i+=2 ) { - glVertex2f( 0.0, (float)(i+offset) ); - glVertex2f( gWinXsize, (float)(i+offset) ); - } - glEnd(); - - glStencilFunc(GL_ALWAYS, RIGHTEYE, RIGHTEYE); - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - glBegin(GL_LINES); - for( i = 1; i < gYsize; i+=2 ) { - glVertex2f( 0.0, (float)(i+offset) ); - glVertex2f( gWinXsize, (float)(i+offset) ); - } - glEnd(); -#else - glStencilFunc(GL_ALWAYS, LEFTEYE, LEFTEYE); - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - glBegin(GL_LINES); - for( i = 1; i < gYsize; i+=2 ) { - glVertex2f( 0.0, (float)(i+offset) ); - glVertex2f( gWinXsize, (float)(i+offset) ); - } - glEnd(); - - glStencilFunc(GL_ALWAYS, RIGHTEYE, RIGHTEYE); - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - glBegin(GL_LINES); - for( i = 0; i < gYsize; i+=2 ) { - glVertex2f( 0.0, (float)(i+offset) ); - glVertex2f( gWinXsize, (float)(i+offset) ); - } - glEnd(); -#endif - - glStencilFunc (GL_ALWAYS, 0, 0); - glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP); - glDisable(GL_STENCIL_TEST); -} - -void argLoadHMDparam( ARParam *lparam, ARParam *rparam ) -{ - argConvGLcpara( lparam, AR_GL_CLIP_NEAR, AR_GL_CLIP_FAR, gl_lpara ); - argConvGLcpara( rparam, AR_GL_CLIP_NEAR, AR_GL_CLIP_FAR, gl_rpara ); - - gl_hmd_para_flag = 1; -} - - -static void argSetStencil( int flag ) -{ - if( flag == 0 ) { - glDisable(GL_STENCIL_TEST); - glStencilFunc (GL_ALWAYS, 0, 0); - glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP); - } - else { - glEnable(GL_STENCIL_TEST); - glStencilFunc (GL_EQUAL, flag, flag); - glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP); - } -} - -void argConvGLcpara( ARParam *param, double gnear, double gfar, double m[16] ) -{ - argConvGLcpara2( param->mat, param->xsize, param->ysize, gnear, gfar, m ); -} - -static void argConvGLcpara2( double cparam[3][4], int width, int height, double gnear, double gfar, double m[16] ) -{ - double icpara[3][4]; - double trans[3][4]; - double p[3][3], q[4][4]; - int i, j; - - if( arParamDecompMat(cparam, icpara, trans) < 0 ) { - printf("gConvGLcpara: Parameter error!!\n"); - exit(0); - } - - for( i = 0; i < 3; i++ ) { - for( j = 0; j < 3; j++ ) { - p[i][j] = icpara[i][j] / icpara[2][2]; - } - } - q[0][0] = (2.0 * p[0][0] / width); - q[0][1] = (2.0 * p[0][1] / width); - q[0][2] = ((2.0 * p[0][2] / width) - 1.0); - q[0][3] = 0.0; - - q[1][0] = 0.0; - q[1][1] = (2.0 * p[1][1] / height); - q[1][2] = ((2.0 * p[1][2] / height) - 1.0); - q[1][3] = 0.0; - - q[2][0] = 0.0; - q[2][1] = 0.0; - q[2][2] = (gfar + gnear)/(gfar - gnear); - q[2][3] = -2.0 * gfar * gnear / (gfar - gnear); - - q[3][0] = 0.0; - q[3][1] = 0.0; - q[3][2] = 1.0; - q[3][3] = 0.0; - - for( i = 0; i < 4; i++ ) { - for( j = 0; j < 3; j++ ) { - m[i+j*4] = q[i][0] * trans[0][j] - + q[i][1] * trans[1][j] - + q[i][2] * trans[2][j]; - } - m[i+3*4] = q[i][0] * trans[0][3] - + q[i][1] * trans[1][3] - + q[i][2] * trans[2][3] - + q[i][3]; - } -} |