Changeset 3598 for trunk/src/opengl/mesa/wmesa.c
- Timestamp:
- May 23, 2000, 10:41:28 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/opengl/mesa/wmesa.c
r2962 r3598 1 /* $Id: wmesa.c,v 1. 2 2000-03-01 18:49:40jeroen Exp $ */1 /* $Id: wmesa.c,v 1.3 2000-05-23 20:41:05 jeroen Exp $ */ 2 2 3 3 /* … … 23 23 /* 24 24 * $Log: wmesa.c,v $ 25 * Revision 1.2 2000-03-01 18:49:40 jeroen 25 * Revision 1.3 2000-05-23 20:41:05 jeroen 26 * *** empty log message *** 27 * 28 * Revision 1.2 2000/03/01 18:49:40 jeroen 26 29 * *** empty log message *** 27 30 * … … 67 70 #define WMESA_STEREO_C 68 71 69 #ifdef __WIN32OS2__70 #include <os2win.h>71 #else72 72 #include <windows.h> 73 #endif74 73 #include <stdio.h> 75 74 #include <stdlib.h> … … 78 77 #include "colors.h" 79 78 #include "macros.h" 80 #include "types.h" 79 /* #include "types.h" */ 81 80 #include "context.h" 82 81 #include "dd.h" … … 90 89 #pragma warning ( disable : 4133 4761 ) 91 90 #else 91 #include <misc.h> 92 92 #ifdef DIVE 93 93 #include <mesadive.h> … … 104 104 #endif 105 105 106 #if def __CYGWIN32__106 #if defined(__CYGWIN32__) || defined(__WIN32OS2__) 107 107 #include "macros.h" 108 108 #include <string.h> 109 #undef CopyMemory 109 110 #define CopyMemory memcpy 110 111 #endif … … 134 135 PWMC Current = NULL; 135 136 WMesaContext WC = NULL; 136 137 #ifdef NDEBUG138 #ifndef assert139 #define assert(ignore) ((void) 0)140 #endif141 #else142 void Mesa_Assert(void *Cond,void *File,unsigned Line)143 {144 char Msg[512];145 sprintf(Msg,"%s %s %d",Cond,File,Line);146 #ifdef __WIN32OS2__147 dprintf((Msg,"%s %s %d",Cond,File,Line));148 #endif149 MessageBox(NULL,Msg,"Assertion failed.",MB_OK);150 exit(1);151 }152 #undef assert153 #define assert(e) if (!e) Mesa_Assert(#e,__FILE__,__LINE__);154 #endif155 137 156 138 //#define DD_GETDC (Current->hDC ) … … 227 209 static void wmSetPixelFormat( PWMC wc, HDC hDC) 228 210 { 229 dprintf(("OPENGL32: Setting PixelFormat\n"));230 231 211 #ifdef DIVE 232 212 wc->cColorBits=DiveQueryDepth(); … … 260 240 } 261 241 #endif 262 263 dprintf(("OPENGL32: Color Bits: %d\n",wc->cColorBits));264 242 } 265 243 … … 325 303 LPBITMAPINFO pbmi = &(pwc->bmi); 326 304 int iUsage; 327 328 dprintf(("OPENGL32: Creating BackingStore for %08X\n",pwc));329 305 330 306 pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); … … 380 356 381 357 for(uiScans = 0; uiScans < uiNumScans; uiScans++){ 382 memcpy(pDest, pBits, dwScanWidth);358 CopyMemory(pDest, pBits, dwScanWidth); 383 359 pBits += dwNextScan; 384 360 pDest += dwNewScan; … … 474 450 int lines; 475 451 476 dprintf(("OPENGL32: clear - all %08d - x %d - y %d - width %d - height %d\n",477 all,x,y,width,height));478 479 452 STARTPROFILE 480 453 … … 485 458 } 486 459 487 dprintf(("OPENGL32: clear - all %08d - x %d - y %d - width %d - height %d\n",488 all,x,y,width,height));489 490 460 if(Current->db_flag==GL_TRUE){ 491 461 UINT nBypp = Current->cColorBits / 8; 492 462 int i = 0; 493 463 int iSize = 0; 494 495 dprintf(("OPENGL32: Clearing BackBuffer\n"));496 464 497 465 if(nBypp ==1 ){ … … 525 493 526 494 // 527 // This is the 24bit case495 /* This is the 24bit case */ 528 496 // 529 497 if (nBypp == 3) { … … 554 522 else 555 523 { /* For single buffer*/ 556 dprintf(("OPENGL32: Clearing FrontBuffer\n"));557 558 524 HDC DC=DD_GETDC; 559 560 dprintf(("OPENGL32: Clearing FrontBuffer DC is %08X\n",DC));561 525 562 526 HPEN Pen=CreatePen(PS_SOLID,1,Current->clearpixel); … … 621 585 } 622 586 623 624 625 /*626 * Set the pixel logic operation. Return GL_TRUE if the device driver627 * can perform the operation, otherwise return GL_FALSE. If GL_FALSE628 * is returned, the logic op will be done in software by Mesa.629 */630 GLboolean logicop( GLcontext* ctx, GLenum op )631 {632 /* can't implement */633 return GL_FALSE;634 }635 587 636 588 … … 806 758 } 807 759 else { 808 dprintf(("OPENGL32: READADDR: %08X - pv %d - LINE R-G-B is %d,%d,%d\n",809 Current->gl_ctx->VB->ColorPtr->data[pv],810 pv,811 Current->gl_ctx->VB->ColorPtr->data[pv][0],812 Current->gl_ctx->VB->ColorPtr->data[pv][1],813 Current->gl_ctx->VB->ColorPtr->data[pv][2]));814 815 760 pixel = RGB((GLubyte)(Current->gl_ctx->VB->ColorPtr->data[pv][0]/* *255.0*/), 816 761 (GLubyte)(Current->gl_ctx->VB->ColorPtr->data[pv][1]/* *255.0*/), 817 762 (GLubyte)(Current->gl_ctx->VB->ColorPtr->data[pv][2]/* *255.0*/)); 818 819 dprintf(("OPENGL32: PIXEL set to %08X",pixel));820 763 } 821 764 … … 855 798 else { 856 799 ENDPROFILE(choose_line_function) 800 // return fast_flat_rgb_line; 857 801 return NULL; 858 802 } … … 874 818 GLuint i; 875 819 PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x; 876 assert(Current->rgb_flag==GL_FALSE);820 ASSERT(Current->rgb_flag==GL_FALSE); 877 821 for (i=0; i<n; i++) 878 822 if (mask[i]) … … 891 835 GLuint i; 892 836 PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x; 893 assert(Current->rgb_flag==GL_FALSE);837 ASSERT(Current->rgb_flag==GL_FALSE); 894 838 for (i=0; i<n; i++) 895 839 if (mask[i]) … … 911 855 GLuint i; 912 856 BYTE *Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x; 913 assert(Current->rgb_flag==GL_FALSE);857 ASSERT(Current->rgb_flag==GL_FALSE); 914 858 for (i=0; i<n; i++) 915 859 if (mask[i]) … … 1022 966 HDC DC=DD_GETDC; 1023 967 PWMC pwc = Current; 1024 assert(Current->rgb_flag==GL_TRUE);968 ASSERT(Current->rgb_flag==GL_TRUE); 1025 969 y=FLIP(y); 1026 970 … … 1055 999 STARTPROFILE 1056 1000 GLuint i; 1057 assert(Current->rgb_flag==GL_FALSE);1001 ASSERT(Current->rgb_flag==GL_FALSE); 1058 1002 for (i=0; i<n; i++) { 1059 1003 if (mask[i]) { … … 1078 1022 STARTPROFILE 1079 1023 GLuint i; 1080 assert(Current->rgb_flag==GL_FALSE);1024 ASSERT(Current->rgb_flag==GL_FALSE); 1081 1025 for (i=0; i<n; i++) { 1082 1026 if (mask[i]) { … … 1100 1044 PWMC pwc = Current; 1101 1045 HDC DC=DD_GETDC; 1102 assert(Current->rgb_flag==GL_TRUE);1046 ASSERT(Current->rgb_flag==GL_TRUE); 1103 1047 1104 1048 for (i=0; i<n; i++) … … 1125 1069 PWMC pwc = Current; 1126 1070 HDC DC=DD_GETDC; 1127 assert(Current->rgb_flag==GL_TRUE);1071 ASSERT(Current->rgb_flag==GL_TRUE); 1128 1072 1129 1073 for (i=0; i<n; i++) … … 1150 1094 GLuint i; 1151 1095 BYTE *Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x; 1152 assert(Current->rgb_flag==GL_FALSE);1096 ASSERT(Current->rgb_flag==GL_FALSE); 1153 1097 for (i=0; i<n; i++) 1154 1098 index[i]=Mem[i]; … … 1166 1110 STARTPROFILE 1167 1111 GLuint i; 1168 assert(Current->rgb_flag==GL_FALSE);1112 ASSERT(Current->rgb_flag==GL_FALSE); 1169 1113 for (i=0; i<n; i++) { 1170 1114 if (mask[i]) { … … 1186 1130 COLORREF Color; 1187 1131 HDC DC=DD_GETDC; 1188 assert(Current->rgb_flag==GL_TRUE);1132 ASSERT(Current->rgb_flag==GL_TRUE); 1189 1133 /* y=FLIP(y);*/ 1190 1134 y = Current->height - y - 1; … … 1212 1156 COLORREF Color; 1213 1157 HDC DC=DD_GETDC; 1214 assert(Current->rgb_flag==GL_TRUE);1158 ASSERT(Current->rgb_flag==GL_TRUE); 1215 1159 for (i=0; i<n; i++) { 1216 1160 if (mask[i]) { … … 1234 1178 1235 1179 1236 static const char *renderer_string(void) 1237 { 1238 return "Windows"; 1180 static const GLubyte *get_string(GLcontext *ctx, GLenum name) 1181 { 1182 if(name == GL_RENDERER) { 1183 return (GLubyte *)"Mesa Windows"; 1184 } 1185 else { 1186 return NULL; 1187 } 1239 1188 } 1240 1189 … … 1243 1192 void setup_DD_pointers( GLcontext* ctx ) 1244 1193 { 1245 ctx->Driver. RendererString = renderer_string;1194 ctx->Driver.GetString = get_string; 1246 1195 ctx->Driver.UpdateState = setup_DD_pointers; 1247 1196 ctx->Driver.GetBufferSize = buffer_size; … … 1258 1207 ctx->Driver.ColorMask = color_mask; 1259 1208 1260 ctx->Driver.LogicOp = logicop;1261 1209 ctx->Driver.Dither = dither; 1262 1210 1263 ctx->Driver.Set Buffer = set_buffer;1211 ctx->Driver.SetDrawBuffer = set_buffer; 1264 1212 ctx->Driver.GetBufferSize = buffer_size; 1265 1213 … … 1269 1217 1270 1218 /* Pixel/span writing functions: */ 1271 1219 ctx->Driver.WriteRGBASpan = write_rgba_span; 1272 1220 ctx->Driver.WriteRGBSpan = write_rgb_span; 1273 1221 ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span; … … 1353 1301 } 1354 1302 1303 #ifdef DIVE 1355 1304 void WMesaUpdateScreenPos(PWMC c,HWND hWnd) 1356 1305 { … … 1364 1313 c->width=CR.right-CR.left-2*GetSystemMetrics(SM_CXFRAME); 1365 1314 c->height=CR.bottom-CR.top-GetSystemMetrics(SM_CYCAPTION)-2*GetSystemMetrics(SM_CYFRAME); 1366 1367 dprintf(("OPENGL32: WMesaUpdateScreenPos %08X - x/y %d/%d, w/h %d/%d\n", 1368 hWnd, 1369 c->WinPos.x, 1370 c->WinPos.y, 1371 c->width, 1372 c->height)); 1373 } 1374 1375 WMesaContext WIN32API WMesaCreateContext( HWND hWnd, HPALETTE* Pal, 1315 } 1316 #endif 1317 1318 WMesaContext GLAPIENTRY WMesaCreateContext( HWND hWnd, HPALETTE* Pal, 1376 1319 GLboolean rgb_flag, 1377 1320 GLboolean db_flag ) … … 1382 1325 c = (struct wmesa_context * ) calloc(1,sizeof(struct wmesa_context)); 1383 1326 1384 dprintf(("OPENGL32: Creating MESA Context (%s)\n",1385 db_flag?"DOUBLE BUFFERED":"SINGLE_BUFFERED"));1386 1387 1327 if (!c) 1388 1328 return NULL; … … 1407 1347 c->dither_flag = GL_FALSE; 1408 1348 #endif 1409 1410 dprintf(("OPENGL32: WMesaCreateContext - db_flag is %d\n",db_flag));1411 1349 1412 1350 if (rgb_flag==GL_FALSE) … … 1415 1353 #ifndef DIVE 1416 1354 c->db_flag = db_flag =GL_TRUE; /* WinG requires double buffering*/ 1417 1418 dprintf(("OPENGL32: Single buffer is not supported in color index mode, setting to double buffer.\n"));1419 1355 #endif 1420 1356 } … … 1461 1397 /* Store window position for DIVE draws - all x/y's are relative to this */ 1462 1398 /* base position of the screen... */ 1463 dprintf(("OPENGL32: Creating context (%08X)\n",c));1464 1465 1399 WMesaUpdateScreenPos(c,hWnd); 1466 1400 … … 1470 1404 free( (void *) c ); 1471 1405 Current=0; 1472 dprintf(("OPENGL32: DIVEINIT failed - exiting!\n"));1473 1406 MessageBoxA( hWnd, "Dive Init FAILED", "", MB_OK ); 1474 exit(1);1407 EXIT(1); 1475 1408 } 1476 1409 #else … … 1478 1411 if (DDInit(c,hWnd) == GL_FALSE) { 1479 1412 free( (void *) c ); 1480 dprintf(("OPENGL32: DIVEINIT failed - exiting!\n")); 1481 exit(1); 1413 EXIT(1); 1482 1414 } 1483 1415 #endif … … 1509 1441 } 1510 1442 1511 c->gl_buffer = gl_create_framebuffer( c->gl_visual ); 1443 c->gl_buffer = gl_create_framebuffer( c->gl_visual, 1444 c->gl_visual->DepthBits > 0, 1445 c->gl_visual->StencilBits > 0, 1446 c->gl_visual->AccumBits > 0, 1447 c->gl_visual->AlphaBits > 0); 1512 1448 1513 1449 if (!c->gl_buffer) { … … 1522 1458 /* setup_DD_pointers(c->gl_ctx); */ 1523 1459 1524 dprintf(("OPENGL32: Created context %08X - (%s)\n",c,c->db_flag?"DOUBLE":"SINGLE"));1525 1526 1460 return c; 1527 1461 } 1528 1462 1529 void WIN32APIWMesaDestroyContext( void )1463 void GLAPIENTRY WMesaDestroyContext( void ) 1530 1464 { 1531 1465 WMesaContext c = Current; … … 1575 1509 } 1576 1510 1577 void WIN32API WMesaMakeCurrent( WMesaContext c ) 1578 { 1579 dprintf(("OPENGL32: WMesaMakeCurrent %08X\n",c)); 1580 1511 void GLAPIENTRY WMesaMakeCurrent( WMesaContext c ) 1512 { 1581 1513 if(!c){ 1582 1514 Current = c; … … 1608 1540 1609 1541 1610 void WIN32API WMesaSwapBuffers( void ) 1611 { 1542 void GLAPIENTRY WMesaSwapBuffers( void ) 1543 { 1544 1612 1545 HDC DC = Current->hDC; 1613 1614 dprintf(("OPENGL32: WMesaSwapBuffers() - Current %08X (%s)\n",1615 Current,Current->db_flag?"DOUBLE":"SINGLE"));1616 1546 1617 1547 if (Current->db_flag) … … 1621 1551 1622 1552 1623 void WIN32APIWMesaPaletteChange(HPALETTE Pal)1553 void GLAPIENTRY WMesaPaletteChange(HPALETTE Pal) 1624 1554 { 1625 1555 int vRet; 1626 1556 LPPALETTEENTRY pPal; 1627 1557 ULONG rc; 1628 1629 dprintf(("OPENGL32: WMesaPaletteChange - Pal %08X",Pal));1630 1558 1631 1559 if (Current && (Current->rgb_flag==GL_FALSE || Current->dither_flag == GL_TRUE)) … … 1641 1569 (PBYTE)pPal); 1642 1570 */ 1643 dprintf(("OPENGL32: DiveSetupSourcePalette rc %d\n",rc));1644 1571 #else 1645 1572 #ifdef DDRAW … … 1796 1723 { 1797 1724 /* We're using a buffered context - write to the backbuffer */ 1798 DiveWriteBackbuffer( pwc,iScanLine,iPixel,r,g,b);1725 DiveWriteBackbuffer(/*pwc*/Current,iScanLine,iPixel,r,g,b); 1799 1726 } 1800 1727 else … … 1802 1729 /* We're using a non-buffered context - write to the video mem! */ 1803 1730 /* TODO: What about cards that do not support direct access?? */ 1804 DiveWriteFrontbuffer( pwc,iScanLine,iPixel,r,g,b);1731 DiveWriteFrontbuffer(/*pwc*/Current,iScanLine,iPixel,r,g,b); 1805 1732 } 1806 1733 } … … 1823 1750 UINT nBypp = pwc->cColorBits / 8; 1824 1751 HDC hic; 1825 1826 dprintf(("OPENGL32: wmCreateDIBSection - HDC is %08X",hDC));1827 1752 1828 1753 dwScanWidth = (((pwc->ScanWidth * nBypp)+ 3) & ~3); … … 1922 1847 #ifdef DIVE 1923 1848 if(DiveDirectAccess()) 1924 DiveFlush(pwc); 1849 { 1850 DiveFlush(pwc); 1851 } 1925 1852 else 1926 1853 bRet = BitBlt(pwc->hDC, 0, 0, pwc->width, pwc->height, … … 2213 2140 } 2214 2141 if(wc->db_flag == GL_FALSE) 2215 wc->lpDDSPrimary->lpVtbl->GetDC(wc->lpDDSPrimary, wc->hDC);2142 wc->lpDDSPrimary->lpVtbl->GetDC(wc->lpDDSPrimary, &wc->hDC); 2216 2143 return TRUE; 2217 2144 } … … 2221 2148 POINT pt; 2222 2149 HRESULT ddrval; 2150 2223 2151 if(wc->lpDD == NULL) 2224 2152 return FALSE; … … 2237 2165 while (wc->lpDDSOffScreen->lpVtbl->Lock(wc->lpDDSOffScreen,NULL, &(wc->ddsd), 0, NULL) == DDERR_WASSTILLDRAWING) 2238 2166 ; 2239 // while ((ddrval = wc->lpDDSOffScreen->lpVtbl->Lock(wc->lpDDSOffScreen,NULL, &(wc->ddsd), DDLOCK_SURFACEMEMORYPTR , NULL)) != DD_OK) 2167 /* while ((ddrval = wc->lpDDSOffScreen->lpVtbl->Lock(wc->lpDDSOffScreen,NULL, &(wc->ddsd), DDLOCK_SURFACEMEMORYPTR , NULL)) != DD_OK)*/ 2240 2168 ; 2241 2169 if(wc->ddsd.lpSurface==NULL) … … 2244 2172 wc->ScreenMem = wc->pbPixels = wc->addrOffScreen = (PBYTE)(wc->ddsd.lpSurface); 2245 2173 wc->ScanWidth = wc->pitch = wc->ddsd.lPitch; 2174 2246 2175 if (stereo_flag) 2247 2176 wc->ScanWidth = wc->ddsd.lPitch*2; … … 2338 2267 return DDCreateOffScreen(wc); 2339 2268 2340 return 0; /* Eliminate compiler warning */2269 return TRUE; 2341 2270 } /* DDInit*/ 2342 2271 … … 2389 2318 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2390 2319 #define INTERP_Z 1 2320 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2391 2321 #define INTERP_RGB 1 2392 2322 #define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y) … … 2431 2361 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2432 2362 #define INTERP_Z 1 2363 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2433 2364 #define INTERP_RGB 1 2434 2365 #define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y) … … 2473 2404 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2474 2405 #define INTERP_Z 1 2406 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2475 2407 #define INTERP_RGB 1 2476 2408 #define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y) … … 2512 2444 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2513 2445 #define INTERP_Z 1 2446 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2514 2447 #define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y) 2515 2448 #define PIXEL_TYPE GLuint … … 2552 2485 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2553 2486 #define INTERP_Z 1 2487 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2554 2488 #define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y) 2555 2489 #define PIXEL_TYPE GLuint … … 2592 2526 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2593 2527 #define INTERP_Z 1 2528 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2594 2529 #define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y) 2595 2530 #define PIXEL_TYPE GLushort … … 2845 2780 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2846 2781 #define INTERP_Z 1 2782 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2847 2783 #define INTERP_INDEX 1 2848 2784 #define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y) … … 2884 2820 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2885 2821 #define INTERP_Z 1 2822 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2886 2823 #define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y) 2887 2824 #define PIXEL_TYPE GLubyte … … 2925 2862 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2926 2863 #define INTERP_Z 1 2864 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2927 2865 #define INTERP_INDEX 1 2928 2866 #define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y) … … 2959 2897 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; 2960 2898 #define INTERP_Z 1 2899 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2961 2900 #define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y) 2962 2901 #define PIXEL_TYPE GLubyte … … 2995 2934 DITHER_RGB_TO_8BIT_SETUP 2996 2935 #define INTERP_Z 1 2936 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 2997 2937 #define INTERP_RGB 1 2998 2938 #define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y) … … 3035 2975 DITHER_RGB_TO_8BIT_SETUP 3036 2976 #define INTERP_Z 1 2977 #define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE 3037 2978 #define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y) 3038 2979 #define PIXEL_TYPE GLubyte
Note:
See TracChangeset
for help on using the changeset viewer.