mirror of
https://github.com/nigels-com/glew.git
synced 2025-02-07 09:22:00 +00:00
*** empty log message ***
git-svn-id: https://glew.svn.sourceforge.net/svnroot/glew/trunk/glew@44 783a27ee-832a-0410-bc00-9f386506c6dd
This commit is contained in:
parent
b68d2be9ad
commit
cdb4f6e6df
52
GNUmakefile
52
GNUmakefile
@ -18,30 +18,53 @@
|
|||||||
GLEW_TARGET ?= /usr
|
GLEW_TARGET ?= /usr
|
||||||
GLEW_VERSION = 1.0.5
|
GLEW_VERSION = 1.0.5
|
||||||
|
|
||||||
CC = \cc
|
SYSTEM = $(strip $(shell uname -s))
|
||||||
|
|
||||||
|
ifeq ($(patsubst CYGWIN%,CYGWIN,$(SYSTEM)), CYGWIN)
|
||||||
|
CC = \gcc-2 -mno-cygwin
|
||||||
|
LD = \gcc-2 -mno-cygwin
|
||||||
|
NAME = glew32
|
||||||
|
DEFINE = -D'GLEW_STATIC'
|
||||||
|
else
|
||||||
|
ifeq ($(patsubst Linux%,Linux,$(SYSTEM)), Linux)
|
||||||
|
CC = \gcc
|
||||||
LD = \ld
|
LD = \ld
|
||||||
|
NAME = GLEW
|
||||||
|
else
|
||||||
|
$(error "Platform '$(SYSTEM)' not supported")
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
AR = \ar
|
||||||
INSTALL = \install
|
INSTALL = \install
|
||||||
RM = \rm -f
|
RM = \rm -f
|
||||||
LN = \ln -s
|
LN = \ln -s
|
||||||
OPT = -O2
|
ifeq ($(MAKECMDGOALS), debug)
|
||||||
|
OPT = -g
|
||||||
|
else
|
||||||
|
OPT = -O3 -fomit-frame-pointer
|
||||||
|
endif
|
||||||
INCLUDE = -Iinclude
|
INCLUDE = -Iinclude
|
||||||
CFLAGS = $(OPT) $(INCLUDE)
|
CFLAGS = $(OPT) $(INCLUDE) $(DEFINE)
|
||||||
|
|
||||||
LIB = libGLEW.so.$(GLEW_VERSION)
|
LIB.A = lib$(NAME).a
|
||||||
LIB.LNK = libGLEW.so
|
LIB.SO = lib$(NAME).so.$(GLEW_VERSION)
|
||||||
|
LIB.SO.LNK = lib$(NAME).so
|
||||||
LIB.SRCS = src/glew.c
|
LIB.SRCS = src/glew.c
|
||||||
LIB.OBJS = $(LIB.SRCS:.c=.o)
|
LIB.OBJS = $(LIB.SRCS:.c=.o)
|
||||||
LIB.LIBS =
|
|
||||||
|
|
||||||
BIN = glewinfo
|
BIN = glewinfo
|
||||||
BIN.SRCS = src/glewinfo.c
|
BIN.SRCS = src/glewinfo.c
|
||||||
BIN.OBJS = $(BIN.SRCS:.c=.o)
|
BIN.OBJS = $(BIN.SRCS:.c=.o)
|
||||||
BIN.LIBS = -Llib -L/usr/X11R6/lib -lglut -lGLEW -lGLU -lGL -lXmu -lX11
|
BIN.LIBS = -Llib -L/usr/X11R6/lib -lglut -l$(NAME) -lGLU -lGL -lXmu -lX11
|
||||||
|
|
||||||
all: lib/$(LIB) bin/$(BIN)
|
all: lib/$(LIB.A) bin/$(BIN)
|
||||||
|
|
||||||
lib/$(LIB): $(LIB.OBJS)
|
lib/$(LIB.A): $(LIB.OBJS)
|
||||||
$(LD) -shared -o $@ $^ $(LIB.LIBS)
|
$(AR) cr $@ $^
|
||||||
|
|
||||||
|
lib/$(LIB.SO): $(LIB.OBJS)
|
||||||
|
$(LD) -shared -o $@ $^
|
||||||
$(LN) $(LIB) lib/$(LIB.LNK)
|
$(LN) $(LIB) lib/$(LIB.LNK)
|
||||||
|
|
||||||
bin/$(BIN): $(BIN.SRCS)
|
bin/$(BIN): $(BIN.SRCS)
|
||||||
@ -54,15 +77,16 @@ install: all
|
|||||||
$(INSTALL) -d -m 755 $(GLEW_TARGET)/include/GL
|
$(INSTALL) -d -m 755 $(GLEW_TARGET)/include/GL
|
||||||
$(INSTALL) -m 644 include/GL/glew.h include/GL/glxew.h $(GLEW_TARGET)/include/GL
|
$(INSTALL) -m 644 include/GL/glew.h include/GL/glxew.h $(GLEW_TARGET)/include/GL
|
||||||
$(INSTALL) -d -m 755 $(GLEW_TARGET)/lib
|
$(INSTALL) -d -m 755 $(GLEW_TARGET)/lib
|
||||||
$(INSTALL) -s -m 755 lib/$(LIB) $(GLEW_TARGET)/lib
|
$(INSTALL) -s -m 755 lib/$(LIB.SO) $(GLEW_TARGET)/lib
|
||||||
$(LN) $(GLEW_TARGET)/lib/$(LIB) $(GLEW_TARGET)/lib/$(LIB.LNK)
|
$(LN) $(GLEW_TARGET)/lib/$(LIB.SO) $(GLEW_TARGET)/lib/$(LIB.SO.LNK)
|
||||||
$(INSTALL) -d -m 755 $(GLEW_TARGET)/bin
|
$(INSTALL) -d -m 755 $(GLEW_TARGET)/bin
|
||||||
$(INSTALL) -s -m 755 bin/$(BIN) $(GLEW_TARGET)/bin
|
$(INSTALL) -s -m 755 bin/$(BIN) $(GLEW_TARGET)/bin
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
$(RM) $(GLEW_TARGET)/include/GL/glew.h $(GLEW_TARGET)/include/GL/glxew.h
|
$(RM) $(GLEW_TARGET)/include/GL/glew.h $(GLEW_TARGET)/include/GL/glxew.h
|
||||||
$(RM) $(GLEW_TARGET)/lib/$(LIB.LNK) $(GLEW_TARGET)/lib/$(LIB)
|
$(RM) $(GLEW_TARGET)/lib/$(LIB.SO.LNK) $(GLEW_TARGET)/lib/$(LIB.SO)
|
||||||
$(RM) $(GLEW_TARGET)/bin/$(BIN)
|
$(RM) $(GLEW_TARGET)/bin/$(BIN)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(LIB.OBJS) lib/$(LIB) lib/$(LIB.LNK) $(BIN.OBJS) bin/$(BIN)
|
$(RM) $(LIB.OBJS) lib/$(LIB.A) lib/$(LIB.SO) lib/$(LIB.SO.LNK) \
|
||||||
|
$(BIN.OBJS) bin/$(BIN)
|
||||||
|
@ -104,13 +104,18 @@
|
|||||||
#ifndef APIENTRY
|
#ifndef APIENTRY
|
||||||
#define GLEW_APIENTRY_DEFINED
|
#define GLEW_APIENTRY_DEFINED
|
||||||
# if defined(__CYGWIN__) || defined(__MINGW32__)
|
# if defined(__CYGWIN__) || defined(__MINGW32__)
|
||||||
# define APIENTRY __attribute__ ((__stdcall__))
|
# define APIENTRY __stdcall
|
||||||
# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
|
# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
|
||||||
# define APIENTRY __stdcall
|
# define APIENTRY __stdcall
|
||||||
# else
|
# else
|
||||||
# define APIENTRY
|
# define APIENTRY
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef GLAPI
|
||||||
|
# if defined(__CYGWIN__) || defined(__MINGW32__)
|
||||||
|
# define GLAPI extern
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
/* <winnt.h> */
|
/* <winnt.h> */
|
||||||
#ifndef CALLBACK
|
#ifndef CALLBACK
|
||||||
#define GLEW_CALLBACK_DEFINED
|
#define GLEW_CALLBACK_DEFINED
|
||||||
|
312
src/wglinfo.c
312
src/wglinfo.c
@ -39,29 +39,184 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <windows.h> /* must include */
|
#include <GL/glew.h> /* OpenGL header */
|
||||||
#include <GL/gl.h> /* OpenGL header */
|
#include <GL/wglew.h> /* GLU header */
|
||||||
#include <GL/glu.h> /* GLU header */
|
|
||||||
|
|
||||||
int drawableonly = 0;
|
int drawableonly = 0;
|
||||||
|
int showall = 0;
|
||||||
int pixelformatok = 0;
|
int pixelformatok = 0;
|
||||||
int dontcreatecontext = 0;
|
int dontcreatecontext = 0;
|
||||||
int displaystdout = 0;
|
int displaystdout = 0;
|
||||||
int verbose = 0;
|
int verbose = 0;
|
||||||
FILE* file = stdout;
|
FILE* file = stdout;
|
||||||
|
|
||||||
#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
|
void
|
||||||
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
|
VisualInfoARB (HDC hDC, int verbose)
|
||||||
|
{
|
||||||
|
int attrib[32], value[32], nAttrib;
|
||||||
|
int i, maxpf;
|
||||||
|
|
||||||
typedef const char* (APIENTRY * wglGetExtensionsStringARBPROC) (HDC hdc);
|
attrib[0] = WGL_NUMBER_PIXEL_FORMATS_ARB;
|
||||||
typedef const char* (APIENTRY * wglGetExtensionsStringEXTPROC) ();
|
wglGetPixelFormatAttribivARB(hDC, 1, 0, 1, attrib, value);
|
||||||
typedef BOOL (APIENTRY * wglGetPixelFormatAttribivARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
|
maxpf = value[0];
|
||||||
typedef BOOL (APIENTRY * wglChoosePixelFormatARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
|
||||||
|
|
||||||
wglGetExtensionsStringARBPROC wglGetExtensionsStringARB = NULL;
|
attrib[0] = WGL_SUPPORT_OPENGL_ARB;
|
||||||
wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT = NULL;
|
attrib[1] = WGL_DRAW_TO_WINDOW_ARB;
|
||||||
wglGetPixelFormatAttribivARBPROC wglGetPixelFormatAttribivARB = NULL;
|
attrib[2] = WGL_DRAW_TO_BITMAP_ARB;
|
||||||
wglChoosePixelFormatARBPROC wglChoosePixelFormatARB = NULL;
|
attrib[3] = WGL_ACCELERATION_ARB;
|
||||||
|
/* WGL_NO_ACCELERATION_ARB, WGL_GENERIC_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB */
|
||||||
|
attrib[4] = WGL_SWAP_METHOD_ARB;
|
||||||
|
/* WGL_SWAP_EXCHANGE_ARB, WGL_SWAP_COPY_ARB, WGL_SWAP_UNDEFINED_ARB */
|
||||||
|
attrib[5] = WGL_DOUBLE_BUFFER_ARB;
|
||||||
|
attrib[6] = WGL_STEREO_ARB;
|
||||||
|
attrib[7] = WGL_PIXEL_TYPE_ARB;
|
||||||
|
/* WGL_TYPE_RGBA_ARB, WGL_TYPE_COLORINDEX_ARB, WGL_TYPE_RGBA_FLOAT_ATI
|
||||||
|
(WGL_ATI_pixel_format_float) */
|
||||||
|
/* Color buffer information */
|
||||||
|
attrib[8] = WGL_COLOR_BITS_ARB;
|
||||||
|
attrib[9] = WGL_RED_BITS_ARB;
|
||||||
|
attrib[10] = WGL_GREEN_BITS_ARB;
|
||||||
|
attrib[11] = WGL_BLUE_BITS_ARB;
|
||||||
|
attrib[12] = WGL_ALPHA_BITS_ARB;
|
||||||
|
/* Accumulation buffer information */
|
||||||
|
attrib[13] = WGL_ACCUM_BITS_ARB;
|
||||||
|
attrib[14] = WGL_ACCUM_RED_BITS_ARB;
|
||||||
|
attrib[15] = WGL_ACCUM_GREEN_BITS_ARB;
|
||||||
|
attrib[16] = WGL_ACCUM_BLUE_BITS_ARB;
|
||||||
|
attrib[17] = WGL_ACCUM_ALPHA_BITS_ARB;
|
||||||
|
/* Depth, stencil, and aux buffer information */
|
||||||
|
attrib[18] = WGL_DEPTH_BITS_ARB;
|
||||||
|
attrib[19] = WGL_STENCIL_BITS_ARB;
|
||||||
|
attrib[20] = WGL_AUX_BUFFERS_ARB;
|
||||||
|
nAttrib = 21;
|
||||||
|
if (wglew.ARB_pbuffer)
|
||||||
|
{
|
||||||
|
attrib[nAttrib] = WGL_DRAW_TO_PBUFFER_ARB;
|
||||||
|
nAttrib++;
|
||||||
|
}
|
||||||
|
if (wglew.NV_float_buffer)
|
||||||
|
{
|
||||||
|
attrib[nAttrib] = WGL_FLOAT_COMPONENTS_NV;
|
||||||
|
nAttrib++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!verbose)
|
||||||
|
{
|
||||||
|
/* print table header */
|
||||||
|
fprintf(file, " +-----+----------------+-----------------+----------+-----------------+\n");
|
||||||
|
fprintf(file, " | | visual | color buff | ax dp st | accum buffs |\n");
|
||||||
|
fprintf(file, " | id | tp ac fm db st | sz r g b a | bf th cl | sz r g b a |\n");
|
||||||
|
fprintf(file, " +-----+----------------+-----------------+----------+-----------------+\n");
|
||||||
|
|
||||||
|
/* loop through all the pixel formats */
|
||||||
|
for(i = 1; i <= maxpf; i++)
|
||||||
|
{
|
||||||
|
wglGetPixelFormatAttribivARB(hDC, i, 0, nAttrib, attrib, value);
|
||||||
|
/* only describe this format if it supports OpenGL */
|
||||||
|
if (!value[0]) continue;
|
||||||
|
/* by default show only fully accelerated window or pbuffer capable visuals */
|
||||||
|
if (!showall
|
||||||
|
&& ((value[2] && !value[1])
|
||||||
|
|| (!wglew.ARB_pbuffer || !value[21])
|
||||||
|
|| (value[3] != WGL_FULL_ACCELERATION_ARB))) continue;
|
||||||
|
/* print out the information for this visual */
|
||||||
|
/* visual id */
|
||||||
|
fprintf(file, " |% 4d | ", i);
|
||||||
|
/* visual type */
|
||||||
|
if (value[1])
|
||||||
|
{
|
||||||
|
if (wglew.ARB_pbuffer && value[21]) fprintf(file, "wp ");
|
||||||
|
else fprintf(file, "wn ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (value[2]) fprintf(file, "bm ");
|
||||||
|
else if (wglew.ARB_pbuffer && value[21]) fprintf(file, "pb ");
|
||||||
|
}
|
||||||
|
/* acceleration */
|
||||||
|
fprintf(file, "%s", value[3] == WGL_FULL_ACCELERATION_ARB ? "fu" :
|
||||||
|
value[3] == WGL_GENERIC_ACCELERATION_ARB ? "ge" :
|
||||||
|
value[3] == WGL_NO_ACCELERATION_ARB ? "no" : ". ");
|
||||||
|
/* format */
|
||||||
|
if (wglew.NV_float_buffer && value[nAttrib-1]) fprintf(file, " f ");
|
||||||
|
else if (wglew.ATI_pixel_format_float && value[7] == WGL_TYPE_RGBA_FLOAT_ATI) fprintf(file, " f ");
|
||||||
|
else if (value[7] == WGL_TYPE_RGBA_ARB) fprintf(file, " i ");
|
||||||
|
else if (value[7] == WGL_TYPE_COLORINDEX_ARB) fprintf(file, " c ");
|
||||||
|
/* double buffer */
|
||||||
|
fprintf(file, " %c ", value[5] ? 'y' : '.');
|
||||||
|
/* stereo */
|
||||||
|
fprintf(file, " %c | ", value[6] ? 'y' : '.');
|
||||||
|
/* color size */
|
||||||
|
if (value[8]) fprintf(file, "%3d ", value[8]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* red */
|
||||||
|
if (value[9]) fprintf(file, "%2d ", value[9]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* green */
|
||||||
|
if (value[10]) fprintf(file, "%2d ", value[10]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* blue */
|
||||||
|
if (value[11]) fprintf(file, "%2d ", value[11]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* alpha */
|
||||||
|
if (value[12]) fprintf(file, "%2d | ", value[12]);
|
||||||
|
else fprintf(file, " . | ");
|
||||||
|
/* aux buffers */
|
||||||
|
if (value[20]) fprintf(file, "%2d ", value[20]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* depth */
|
||||||
|
if (value[18]) fprintf(file, "%2d ", value[18]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* stencil */
|
||||||
|
if (value[19]) fprintf(file, "%2d | ", value[19]);
|
||||||
|
else fprintf(file, " . | ");
|
||||||
|
/* accum size */
|
||||||
|
if (value[13]) fprintf(file, "%3d ", value[13]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* accum red */
|
||||||
|
if (value[14]) fprintf(file, "%2d ", value[14]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* accum green */
|
||||||
|
if (value[15]) fprintf(file, "%2d ", value[15]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* accum blue */
|
||||||
|
if (value[16]) fprintf(file, "%2d ", value[16]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
/* accum alpha */
|
||||||
|
if (value[17]) fprintf(file, "%2d ", value[17]);
|
||||||
|
else fprintf(file, " . ");
|
||||||
|
fprintf(file, "|\n");
|
||||||
|
}
|
||||||
|
/* print table footer */
|
||||||
|
fprintf(file, " +-----+----------------+-----------------+----------+-----------------+\n");
|
||||||
|
fprintf(file, " | | visual | color buff | ax dp st | accum buffs |\n");
|
||||||
|
fprintf(file, " | id | tp ac fm db st | sz r g b a | bf th cl | sz r g b a |\n");
|
||||||
|
fprintf(file, " +-----+----------------+-----------------+----------+-----------------+\n");
|
||||||
|
}
|
||||||
|
else /* verbose */
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
fprintf(file, "\n");
|
||||||
|
/* loop through all the pixel formats */
|
||||||
|
for(i = 1; i <= maxpf; i++)
|
||||||
|
{
|
||||||
|
DescribePixelFormat(hDC, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
|
||||||
|
/* only describe this format if it supports OpenGL */
|
||||||
|
if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)
|
||||||
|
|| (drawableonly && !(pfd.dwFlags & PFD_DRAW_TO_WINDOW))) continue;
|
||||||
|
fprintf(file, "Visual ID: %2d depth=%d class=%s\n", i, pfd.cDepthBits,
|
||||||
|
pfd.cColorBits <= 8 ? "PseudoColor" : "TrueColor");
|
||||||
|
fprintf(file, " bufferSize=%d level=%d renderType=%s doubleBuffer=%d stereo=%d\n", pfd.cColorBits, pfd.bReserved, pfd.iPixelType == PFD_TYPE_RGBA ? "rgba" : "ci", pfd.dwFlags & PFD_DOUBLEBUFFER, pfd.dwFlags & PFD_STEREO);
|
||||||
|
fprintf(file, " generic=%d generic accelerated=%d\n", (pfd.dwFlags & PFD_GENERIC_FORMAT) == PFD_GENERIC_FORMAT, (pfd.dwFlags & PFD_GENERIC_ACCELERATED) == PFD_GENERIC_ACCELERATED);
|
||||||
|
fprintf(file, " rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cRedBits, pfd.cGreenBits, pfd.cBlueBits, pfd.cAlphaBits);
|
||||||
|
fprintf(file, " auxBuffers=%d depthSize=%d stencilSize=%d\n", pfd.cAuxBuffers, pfd.cDepthBits, pfd.cStencilBits);
|
||||||
|
fprintf(file, " accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n", pfd.cAccumRedBits, pfd.cAccumGreenBits, pfd.cAccumBlueBits, pfd.cAccumAlphaBits);
|
||||||
|
fprintf(file, " multiSample=%d multisampleBuffers=%d\n", 0, 0);
|
||||||
|
fprintf(file, " Opaque.\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
VisualInfo (HDC hDC, int verbose)
|
VisualInfo (HDC hDC, int verbose)
|
||||||
@ -240,22 +395,18 @@ CreateGLWindow (char* title, int x, int y, int width, int height,
|
|||||||
wc.hbrBackground = NULL;
|
wc.hbrBackground = NULL;
|
||||||
wc.lpszMenuName = NULL;
|
wc.lpszMenuName = NULL;
|
||||||
wc.lpszClassName = "OpenGL";
|
wc.lpszClassName = "OpenGL";
|
||||||
|
|
||||||
if (!RegisterClass(&wc))
|
if (!RegisterClass(&wc))
|
||||||
{
|
{
|
||||||
MessageBox(NULL, "RegisterClass() failed: "
|
MessageBox(NULL, "Failed to register window class", "Error", MB_OK);
|
||||||
"Cannot register window class.", "Error", MB_OK);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hWnd = CreateWindow("OpenGL", title, WS_OVERLAPPEDWINDOW |
|
hWnd = CreateWindow("OpenGL", title, WS_OVERLAPPEDWINDOW |
|
||||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
|
WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
|
||||||
x, y, width, height, NULL, NULL, hInstance, NULL);
|
x, y, width, height, NULL, NULL, hInstance, NULL);
|
||||||
|
|
||||||
if (hWnd == NULL)
|
if (hWnd == NULL)
|
||||||
{
|
{
|
||||||
MessageBox(NULL, "CreateWindow() failed: Cannot create a window.",
|
MessageBox(NULL, "Failed to create a window", "Error", MB_OK);
|
||||||
"Error", MB_OK);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
hDC = GetDC(hWnd);
|
hDC = GetDC(hWnd);
|
||||||
@ -270,12 +421,12 @@ CreateGLWindow (char* title, int x, int y, int width, int height,
|
|||||||
pf = ChoosePixelFormat(hDC, &pfd);
|
pf = ChoosePixelFormat(hDC, &pfd);
|
||||||
if (pf == 0)
|
if (pf == 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ChoosePixelFormat() failed - trying with Pixelformat 1!\n");
|
//fprintf(stderr, "ChoosePixelFormat() failed - trying with Pixelformat 1!\n");
|
||||||
pf = 1;
|
pf = 1;
|
||||||
}
|
}
|
||||||
if (SetPixelFormat(hDC, pf, &pfd) == FALSE)
|
if (SetPixelFormat(hDC, pf, &pfd) == FALSE)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "SetPixelFormat(%d) failed! No Renderer data will be available!\n", pf);
|
//fprintf(stderr, "SetPixelFormat(%d) failed! No Renderer data will be available!\n", pf);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -336,22 +487,16 @@ main (int argc, char** argv)
|
|||||||
HGLRC hRC;
|
HGLRC hRC;
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
MSG msg;
|
MSG msg;
|
||||||
|
int err;
|
||||||
|
|
||||||
while (--argc)
|
while (--argc)
|
||||||
{
|
{
|
||||||
if (strcmp("-h", argv[argc]) == 0) {
|
if (strcmp("-h", argv[argc]) == 0) {
|
||||||
//printf("Usage: wglinfo [-v] [-t] [-m] [-h] [-dispay <dname>] [-nfbc] [-fpcinfo]\n");
|
//printf("Usage: wglinfo [-v] [-t] [-m] [-h] [-dispay <dname>] [-nfbc] [-fpcinfo]\n");
|
||||||
fprintf(stderr, "Usage: wglinfo [-d] [-v] [-w] [-s] [-h]\n");
|
fprintf(stderr, "Usage: wglinfo [-v] [-a] [-s] [-h]\n");
|
||||||
fprintf(stderr, " -d: no context (pixelformat enumeration, but no render string)\n");
|
fprintf(stderr, " -d: no context (pixelformat enumeration, but no render string)\n");
|
||||||
fprintf(stderr, " -v: print visuals info in verbose form\n");
|
fprintf(stderr, " -v: print visual info in verbose form\n");
|
||||||
/*
|
fprintf(stderr, " -a: show all visuals\n");
|
||||||
printf(" -t: Print verbose table (not implemented on Win32)\n");
|
|
||||||
printf(" -m: Don't print mid table headers (in long tables). (not on Win32)\n");
|
|
||||||
printf(" -display <dname>: Print GLX visuals on specified server. (not on Win32)\n");
|
|
||||||
printf(" -nfbc: Don't use fbconfig extension (not available on Win32)\n");
|
|
||||||
printf(" -fbcinfo: print out additional fbconfig information (not on Win32)\n");
|
|
||||||
*/
|
|
||||||
fprintf(stderr, " -w: show only visuals that can draw to the screen\n");
|
|
||||||
fprintf(stderr, " -s: display to stdout instead of wglinfo.txt\n");
|
fprintf(stderr, " -s: display to stdout instead of wglinfo.txt\n");
|
||||||
fprintf(stderr, " -h: this screen\n");
|
fprintf(stderr, " -h: this screen\n");
|
||||||
return 1;
|
return 1;
|
||||||
@ -360,82 +505,55 @@ main (int argc, char** argv)
|
|||||||
{
|
{
|
||||||
verbose = 1;
|
verbose = 1;
|
||||||
}
|
}
|
||||||
else if (strcmp("-w", argv[argc]) == 0)
|
else if (strcmp("-a", argv[argc]) == 0)
|
||||||
{
|
{
|
||||||
drawableonly = 1;
|
showall = 1;
|
||||||
}
|
}
|
||||||
else if (strcmp("-d", argv[argc]) == 0)
|
|
||||||
{
|
|
||||||
dontcreatecontext = 1;
|
|
||||||
}
|
|
||||||
else if (strcmp("-s", argv[argc]) == 0)
|
else if (strcmp("-s", argv[argc]) == 0)
|
||||||
{
|
{
|
||||||
displaystdout = 1;
|
displaystdout = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* create window and OpenGL rendering context */
|
||||||
if (!displaystdout) file = fopen("wglinfo.txt", "w");
|
|
||||||
if (file == NULL) file = stdout;
|
|
||||||
|
|
||||||
hWnd = CreateGLWindow("wglinfo", 0, 0, 100, 100, PFD_TYPE_RGBA, PFD_DOUBLEBUFFER);
|
hWnd = CreateGLWindow("wglinfo", 0, 0, 100, 100, PFD_TYPE_RGBA, PFD_DOUBLEBUFFER);
|
||||||
if (hWnd == NULL) return 1;
|
if (hWnd == NULL) return 1;
|
||||||
hDC = GetDC(hWnd);
|
hDC = GetDC(hWnd);
|
||||||
pixelformatok = pixelformatok && !dontcreatecontext;
|
hRC = wglCreateContext(hDC);
|
||||||
if (pixelformatok)
|
wglMakeCurrent(hDC, hRC);
|
||||||
|
/* initialize GLEW */
|
||||||
|
err = glewInit();
|
||||||
|
if (GLEW_OK != err)
|
||||||
{
|
{
|
||||||
hRC = wglCreateContext(hDC);
|
char errStr[128];
|
||||||
wglMakeCurrent(hDC, hRC);
|
sprintf(errStr, "GLEW failed to initialize: %s", glewGetErrorString(err));
|
||||||
|
MessageBox(NULL, errStr, "Error", MB_OK);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
ShowWindow(hWnd, SW_HIDE);
|
ShowWindow(hWnd, SW_HIDE);
|
||||||
|
/* open file */
|
||||||
if (pixelformatok)
|
if (!displaystdout) file = fopen("wglinfo.txt", "w");
|
||||||
|
if (file == NULL) file = stdout;
|
||||||
|
/* output header information */
|
||||||
|
/* OpenGL extensions */
|
||||||
|
fprintf(file, "OpenGL vendor string: %s\n", glGetString(GL_VENDOR));
|
||||||
|
fprintf(file, "OpenGL renderer string: %s\n", glGetString(GL_RENDERER));
|
||||||
|
fprintf(file, "OpenGL version string: %s\n", glGetString(GL_VERSION));
|
||||||
|
fprintf(file, "OpenGL extensions (GL_): \n");
|
||||||
|
PrintExtensions((char*)glGetString(GL_EXTENSIONS));
|
||||||
|
/* GLU extensions */
|
||||||
|
fprintf(file, "GLU version string: %s\n", gluGetString(GLU_VERSION));
|
||||||
|
fprintf(file, "GLU extensions (GLU_): \n");
|
||||||
|
PrintExtensions((char*)gluGetString(GLU_EXTENSIONS));
|
||||||
|
/* WGL extensions */
|
||||||
|
if (wglew.ARB_extensions_string || wglew.EXT_extensions_string)
|
||||||
{
|
{
|
||||||
/* output header information */
|
fprintf(file, "WGL extensions (WGL_): \n");
|
||||||
/* OpenGL extensions */
|
PrintExtensions(wglGetExtensionsStringARB ? (char*)wglGetExtensionsStringARB(hDC) :
|
||||||
/*
|
(char*)wglGetExtensionsStringEXT(hDC));
|
||||||
printf("display: N/A\n");
|
|
||||||
printf("server wgl vendor string: N/A\n");
|
|
||||||
printf("server wgl version string: N/A\n");
|
|
||||||
printf("server wgl extensions (WGL_): N/A\n");
|
|
||||||
printf("client wgl version: N/A\n");
|
|
||||||
printf("client wgl extensions (WGL_): none\n");
|
|
||||||
*/
|
|
||||||
fprintf(file, "OpenGL vendor string: %s\n", glGetString(GL_VENDOR));
|
|
||||||
fprintf(file, "OpenGL renderer string: %s\n", glGetString(GL_RENDERER));
|
|
||||||
fprintf(file, "OpenGL version string: %s\n", glGetString(GL_VERSION));
|
|
||||||
fprintf(file, "OpenGL extensions (GL_): \n");
|
|
||||||
PrintExtensions((char*)glGetString(GL_EXTENSIONS));
|
|
||||||
|
|
||||||
/* GLU extensions */
|
|
||||||
fprintf(file, "GLU version string: %s\n", gluGetString(GLU_VERSION));
|
|
||||||
fprintf(file, "GLU extensions (GLU_): \n");
|
|
||||||
PrintExtensions((char*)gluGetString(GLU_EXTENSIONS));
|
|
||||||
|
|
||||||
/* WGL extensions */
|
|
||||||
wglGetExtensionsStringARB = (wglGetExtensionsStringARBPROC)
|
|
||||||
wglGetProcAddress("wglGetExtensionsStringARB");
|
|
||||||
if (!wglGetExtensionsStringARB)
|
|
||||||
{
|
|
||||||
wglGetExtensionsStringEXT = (wglGetExtensionsStringEXTPROC)
|
|
||||||
wglGetProcAddress("wglGetExtensionsStringEXT");
|
|
||||||
}
|
|
||||||
if (wglGetExtensionsStringARB || wglGetExtensionsStringEXT)
|
|
||||||
{
|
|
||||||
//fprintf(file, "WGL vendor string: %s\n", );
|
|
||||||
//fprintf(file, "WGL version string: %s\n", );
|
|
||||||
fprintf(file, "WGL extensions (WGL_): \n");
|
|
||||||
if (wglGetExtensionsStringARB)
|
|
||||||
PrintExtensions(wglGetExtensionsStringARB ? (char*)wglGetExtensionsStringARB(hDC):
|
|
||||||
(char*)wglGetExtensionsStringARB(hDC));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* enumerate all the formats */
|
/* enumerate all the formats */
|
||||||
wglChoosePixelFormatARB =
|
#if 1
|
||||||
(wglChoosePixelFormatARBPROC)wglGetProcAddress("wglChoosePixelFormatARB");
|
if (wglew.ARB_pixel_format)
|
||||||
wglGetPixelFormatAttribivARB =
|
|
||||||
(wglGetPixelFormatAttribivARBPROC)wglGetProcAddress("wglGetPixelFormatAttribivARB");
|
|
||||||
if (wglChoosePixelFormatARB != NULL && wglGetPixelFormatAttribivARB != NULL)
|
|
||||||
{
|
{
|
||||||
int attrib[16], value[16], pf;
|
int attrib[16], value[16], pf;
|
||||||
unsigned int c;
|
unsigned int c;
|
||||||
@ -445,21 +563,25 @@ main (int argc, char** argv)
|
|||||||
wglChoosePixelFormatARB(hDC, attrib, 0, 1, &pf, &c);
|
wglChoosePixelFormatARB(hDC, attrib, 0, 1, &pf, &c);
|
||||||
attrib[0] = WGL_NUMBER_PIXEL_FORMATS_ARB;
|
attrib[0] = WGL_NUMBER_PIXEL_FORMATS_ARB;
|
||||||
wglGetPixelFormatAttribivARB(hDC, 0, 0, 1, attrib, value);
|
wglGetPixelFormatAttribivARB(hDC, 0, 0, 1, attrib, value);
|
||||||
|
VisualInfoARB(hDC, verbose);
|
||||||
}
|
}
|
||||||
VisualInfo(hDC, verbose);
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
VisualInfo(hDC, verbose);
|
||||||
|
}
|
||||||
|
/* quit event loop */
|
||||||
PostQuitMessage(0);
|
PostQuitMessage(0);
|
||||||
while (GetMessage(&msg, hWnd, 0, 0))
|
while (GetMessage(&msg, hWnd, 0, 0))
|
||||||
{
|
{
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
|
/* release resources */
|
||||||
if (pixelformatok) wglMakeCurrent(NULL, NULL);
|
if (pixelformatok) wglMakeCurrent(NULL, NULL);
|
||||||
ReleaseDC(hWnd, hDC);
|
ReleaseDC(hWnd, hDC);
|
||||||
if (pixelformatok) wglDeleteContext(hRC);
|
if (pixelformatok) wglDeleteContext(hRC);
|
||||||
DestroyWindow(hWnd);
|
DestroyWindow(hWnd);
|
||||||
|
|
||||||
if (file != stdout) fclose(file);
|
if (file != stdout) fclose(file);
|
||||||
|
|
||||||
return msg.wParam;
|
return msg.wParam;
|
||||||
|
Loading…
Reference in New Issue
Block a user