-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathlisting4.html
executable file
·374 lines (336 loc) · 17.3 KB
/
listing4.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<!-- BEGIN META TAG INFO -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="home" href="http://developer.apple.com/">
<link rel="find" href="http://developer.apple.com/search/">
<link rel="stylesheet" type="text/css" href="../../documentation/css/adcstyle.css" title="fonts">
<script language="JavaScript" src="../../documentation/js/adc.js" type="text/javascript"></script>
<!-- END META TAG INFO -->
<!-- BEGIN TITLE -->
<title>GLCarbon1ContextPbuffer - /glCheck.h</title>
<!-- END TITLE -->
<script language="JavaScript">
function JumpToNewPage() {
window.location=document.scpopupmenu.gotop.value;
return true;
}
</script>
</head>
<!-- BEGIN BODY OPEN -->
<body>
<!--END BODY OPEN -->
<!-- START CENTER OPEN -->
<center>
<!-- END CENTER OPEN -->
<!-- BEGIN LOGO AND SEARCH -->
<!--#include virtual="/includes/adcnavbar"-->
<!-- END LOGO AND SEARCH -->
<!-- START BREADCRUMB -->
<div id="breadcrumb">
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td scope="row"><img width="340" height="10" src="images/1dot.gif" alt=""></td>
<td><img width="340" height="10" src="images/1dot.gif" alt=""></td>
</tr>
<tr valign="middle">
<td align="left" colspan="2">
<a href="http://developer.apple.com/">ADC Home</a> > <a href="../../referencelibrary/index.html">Reference Library</a> > <a href="../../samplecode/index.html">Sample Code</a> > <a href="../../samplecode/GraphicsImaging/index.html">Graphics & Imaging</a> > <a href="../../samplecode/GraphicsImaging/idxOpenGL-date.html">OpenGL</a> > <A HREF="javascript:location.replace('index.html');">GLCarbon1ContextPbuffer</A> >
</td>
</tr>
<tr>
<td colspan="2" scope="row"><img width="680" height="35" src="images/1dot.gif" alt=""></td>
</tr>
</table>
</div>
<!-- END BREADCRUMB -->
<!-- START MAIN CONTENT -->
<!-- START TITLE GRAPHIC AND INTRO-->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td><h1><div id="pagehead">GLCarbon1ContextPbuffer</div></h1></td>
</tr>
</table>
<!-- END TITLE GRAPHIC AND INTRO -->
<!-- START WIDE COLUMN -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td id="scdetails">
<h2>/glCheck.h</h2>
<form name="scpopupmenu" onSubmit="return false;" method=post>
<p><strong>View Source Code:</strong>
<select name="gotop" onChange="JumpToNewPage();" style="width:340px"><option selected value="ingnore">Select File</option>
<option value="listing1.html">/camera.h</option>
<option value="listing2.html">/drawInfo.h</option>
<option value="listing3.html">/glCheck.c</option>
<option value="listing4.html">/glCheck.h</option>
<option value="listing5.html">/HID Support/HID_Config_Utilities.c</option>
<option value="listing6.html">/HID Support/HID_Config_Utilities.h</option>
<option value="listing7.html">/HID Support/HID_Error_Handler.c</option>
<option value="listing8.html">/HID Support/HID_Error_Handler.h</option>
<option value="listing9.html">/HID Support/HID_Name_Lookup.c</option>
<option value="listing10.html">/HID Support/HID_Name_Lookup.h</option>
<option value="listing11.html">/HID Support/HID_Queue_Utilities.c</option>
<option value="listing12.html">/HID Support/HID_Queue_Utilities.h</option>
<option value="listing13.html">/HID Support/HID_Utilities.c</option>
<option value="listing14.html">/HID Support/HID_Utilities.h</option>
<option value="listing15.html">/HID Support/HID_Utilities_External.h</option>
<option value="listing16.html">/HID Support/HID_Utilities_Internal.h</option>
<option value="listing17.html">/HID Support/HIDSupport.c</option>
<option value="listing18.html">/HID Support/HIDSupport.h</option>
<option value="listing19.html">/main.c</option>
<option value="listing20.html">/main.h</option>
<option value="listing21.html">/pbuffer.c</option>
<option value="listing22.html">/pbuffer.h</option>
<option value="listing23.html">/SurfaceGeometry.c</option>
<option value="listing24.html">/SurfaceGeometry.h</option>
<option value="listing25.html">/trackball.c</option>
<option value="listing26.html">/trackball.h</option></select>
</p>
</form>
<p><strong><a href="GLCarbon1ContextPbuffer.zip">Download Sample</a></strong> (“GLCarbon1ContextPbuffer.zip”, 220.4K)<BR>
<strong><a href="GLCarbon1ContextPbuffer.dmg">Download Sample</a></strong> (“GLCarbon1ContextPbuffer.dmg”, 270.0K)</p>
<!--
<p><strong><a href="#">Download Sample</a></strong> (“filename.sit”, 500K)</p>
-->
</td>
</tr>
<tr>
<td scope="row"><img width="680" height="10" src="images/1dot.gif" alt=""><br>
<img height="1" width="680" src="images/1dot_919699.gif" alt=""><br>
<img width="680" height="20" src="images/1dot.gif" alt=""></td>
</tr>
<tr>
<td scope="row">
<!--googleon: index -->
<pre class="sourcecodebox">/*
* glCheck.h
* Carbon OpenGL
*
* Created by Geoff Stahl on Fri Jan 24 2003.
Copyright: Copyright 2003 Apple Computer, Inc., All Rights Reserved
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc.
("Apple") in consideration of your agreement to the following terms, and your
use, installation, modification or redistribution of this Apple software
constitutes acceptance of these terms. If you do not agree with these terms,
please do not use, install, modify or redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and subject
to these terms, Apple grants you a personal, non-exclusive license, under Apple’s
copyrights in this original Apple software (the "Apple Software"), to use,
reproduce, modify and redistribute the Apple Software, with or without
modifications, in source and/or binary forms; provided that if you redistribute
the Apple Software in its entirety and without modifications, you must retain
this notice and the following text and disclaimers in all such redistributions of
the Apple Software. Neither the name, trademarks, service marks or logos of
Apple Computer, Inc. may be used to endorse or promote products derived from the
Apple Software without specific prior written permission from Apple. Except as
expressly stated in this notice, no other rights or licenses, express or implied,
are granted by Apple herein, including but not limited to any patent rights that
may be infringed by your derivative works or by other works in which the Apple
Software may be incorporated.
The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO
WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION
OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
(INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// glcheck allows developer to check the hardware capabilities of all GPU's
// returning an array of records reflecting the attached hardware. This
// list can be regenerated on Display Manager notifications to keep the
// client update to on capabilities and setup changes. This is provided as
// sample to allow developers the freedom to check as few or as many
// conditions and capabilities as they would like or add their own checks
#include <ApplicationServices/ApplicationServices.h>
typedef struct {
// developers can add capabilities as required
CGDirectDisplayID cgDisplayID; // CG display ID (main identifier)
unsigned long displayID; // QD display ID
GDHandle hGDevice; // graphics device handle
CGOpenGLDisplayMask cglDisplayMask; // CGL display mask
// current (at time of look up) device geometry
long deviceWidth; // pixel width
long deviceHeight; // pixel width
long deviceOriginX; // left location of device (relative to main device)
long deviceOriginY; // upper location of device (relative to main device)
short deviceDepth; // pixel depth in bits
short deviceRefresh; // integer refresh rate in Hz
// Renderer info
long deviceVRAM; // video memory in bytes
long deviceTextureRAM; // uses current mode (geometry, pixel depth, etc.)
unsigned long rendererID; // renderer ID
char strRendererName [256]; // name of hardware renderer
char strRendererVendor [256]; // name of hardware renderer vendor
char strRendererVersion [256]; // string rep of hardware renderer version
bool fullScreenCapable; // does device support full screen
// can add more device specs as you want
// Renderer Caps
long textureUnits; // standard gl path max number of texture units
long maxTextureSize; // maximum 1D and 2D texture size supported
long max3DTextureSize; // maximum 3D texture size supported
long maxCubeMapTextureSize; // maximum cube map texture size supported
long maxRectTextureSize; // maximum rectangular texture size supported
// OpenGL version support
unsigned short glVersion; // bcd gl version (ie. 1.4 is 0x0140)
// Functionality
bool fSpecularVector; // GL_APPLE_specular_vector
bool fTransformHint; // GL_APPLE_transform_hint
bool fPackedPixels; // GL_APPLE_packed_pixels or 1.2+
bool fClientStorage; // GL_APPLE_client_storage
bool fYCbCr; // GL_APPLE_ycbcr_422 (YUV texturing)
bool fTextureRange; // GL_APPLE_texture_range (AGP texturing)
bool fFence; // GL_APPLE_fence
bool fVAR; // GL_APPLE_vertex_array_range
bool fVAO; // GL_APPLE_vertex_array_object
bool fElementArray; // GL_APPLE_element_array
bool fVPEvals; // GL_APPLE_vertex_program_evaluators
bool fFloatPixels; // GL_APPLE_float_pixels
bool fFlushRenderer; // GL_APPLE_flush_render
bool fPixelBuffer; // GL_APPLE_pixel_buffer
bool fImaging; // GL_ARB_imaging (not required in 1.2+)
bool fTransposeMatrix; // GL_ARB_transpose_matrix or 1.3+
bool fMultitexture; // GL_ARB_multitexture or 1.3+
bool fTexEnvAdd; // GL_ARB_texture_env_add, GL_EXT_texture_env_add or 1.3+
bool fTexEnvCombine; // GL_ARB_texture_env_combine or 1.3+
bool fTexEnvDot3; // GL_ARB_texture_env_dot3 or 1.3+
bool fTexEnvCrossbar; // GL_ARB_texture_env_crossbar or 1.4+
bool fTexCubeMap; // GL_ARB_texture_cube_map or 1.3+
bool fTexCompress; // GL_ARB_texture_compression or 1.3+
bool fMultisample; // GL_ARB_multisample or 1.3+ (Anti-aliasing)
bool fTexBorderClamp; // GL_ARB_texture_border_clamp or 1.3+
bool fPointParam; // GL_ARB_point_parameters or 1.4+
bool fVertexProg; // GL_ARB_vertex_program
bool fFragmentProg; // GL_ARB_fragment_program
bool fTexMirrorRepeat; // GL_ARB_texture_mirrored_repeat or 1.4+
bool fDepthTex; // GL_ARB_depth_texture or 1.4+
bool fShadow; // GL_ARB_shadow or 1.4+
bool fShadowAmbient; // GL_ARB_shadow_ambient
bool fVertexBlend; // GL_ARB_vertex_blend
bool fWindowPos; // GL_ARB_window_pos or 1.4+
bool fTex3D; // GL_EXT_texture3D or 1.2+
bool fClipVolHint; // GL_EXT_clip_volume_hint
bool fRescaleNorm; // GL_EXT_rescale_normal or 1.2+
bool fBlendColor; // GL_EXT_blend_color or GL_ARB_imaging
bool fBlendMinMax; // GL_EXT_blend_minmax or GL_ARB_imaging
bool fBlendSub; // GL_EXT_blend_subtract or GL_ARB_imaging
bool fCVA; // GL_EXT_compiled_vertex_array
bool fTexLODBias; // GL_EXT_texture_lod_bias or 1.4+
bool fABGR; // GL_EXT_abgr
bool fBGRA; // GL_EXT_bgra or 1.2+
bool fTexFilterAniso; // GL_EXT_texture_filter_anisotropic
bool fPaletteTex; // GL_EXT_paletted_texture
bool fShareTexPalette; // GL_EXT_shared_texture_palette
bool fSecColor; // GL_EXT_secondary_color or 1.4+
bool fTexCompressS3TC; // GL_EXT_texture_compression_s3tc
bool fTexRect; // GL_EXT_texture_rectangle
bool fFogCoord; // GL_EXT_fog_coord
bool fDrawRangeElements; // GL_EXT_draw_range_elements
bool fStencilWrap; // GL_EXT_stencil_wrap or 1.4+
bool fBlendFuncSep; // GL_EXT_blend_func_separate or 1.4+
bool fMultiDrawArrays; // GL_EXT_multi_draw_arrays or 1.4+
bool fShadowFunc; // GL_EXT_shadow_funcs
bool fStencil2Side; // GL_EXT_stencil_two_side
bool fColorSubtable; // GL_EXT_color_subtable or GL_ARB_imaging
bool fConvolution; // GL_EXT_convolution or GL_ARB_imaging
bool fHistogram; // GL_EXT_histogram or GL_ARB_imaging
bool fColorTable; // GL_SGI_color_table or GL_ARB_imaging
bool fColorMatrix; // GL_SGI_color_matrix
bool fTexEdgeClamp; // GL_SGIS_texture_edge_clamp or 1.2+
bool fGenMipmap; // GL_SGIS_generate_mipmap or 1.4+
bool fTexLOD; // GL_SGIS_texture_lod or 1.2+
bool fPointCull; // GL_ATI_point_cull_mode
bool fTexMirrorOnce; // GL_ATI_texture_mirror_once
bool fPNtriangles; // GL_ATI_pn_triangles or GL_ATIX_pn_triangles
bool fTextFragShader; // GL_ATI_text_fragment_shader
bool fBlendEqSep; // GL_ATI_blend_equation_separate
bool fBlendWeightMinMax; // GL_ATI_blend_weighted_minmax
bool fCombine3; // GL_ATI_texture_env_combine3
bool fSepStencil; // GL_ATI_separate_stencil
bool fArrayRevComps4Byte; // GL_ATI_array_rev_comps_in_4_bytes
bool fPointSprite; // GL_NV_point_sprite
bool fRegCombiners; // GL_NV_register_combiners
bool fRegCombiners2; // GL_NV_register_combiners2
bool fTexEnvCombine4; // GL_NV_texture_env_combine4
bool fBlendSquare; // GL_NV_blend_square or 1.4+
bool fFogDist; // GL_NV_fog_distance
bool fMultisampleFilterHint; // GL_NV_multisample_filter_hint
bool fTexGenReflect; // GL_NV_texgen_reflection
bool fTexShader; // GL_NV_texture_shader
bool fTexShader2; // GL_NV_texture_shader2
bool fTexShader3; // GL_NV_texture_shader3
bool fDepthClamp; // GL_NV_depth_clamp
bool fLightMaxExp; // GL_NV_light_max_exponent
bool fConvBorderModes; // GL_HP_convolution_border_modes or GL_ARB_imaging
bool fRasterPosClip; // GL_IBM_rasterpos_clip
} GLCaps;
// this does a reasonable check to see if things have changed without being
// too heavy weight; returns 1 if changed 0 if not
// checks num displays, displayID, displayMask, each display geometry and
// renderer VRAM and ID
unsigned char HaveOpenGLCapsChanged (GLCaps aDisplayCaps[],
CGDisplayCount dspyCnt);
// This will walk all active displays and gather information about their
// hardware renderer
// An array length (maxDisplays) and array of GLCaps are passed in. Up to
// maxDisplays of the array are filled in with the displays meeting the
// specified criteria. The actual number of displays filled in is returned
// in dspyCnt. Calling this function with maxDisplays of 0 will just
// return the number of displays in dspyCnt.
// Developers should note this is NOT an exhaustive list of all the
// capabilities one could query, nor a required set of capabilities,
// feel free to add or subtract queries as you find helpful for your
// application/use.
// one note on mirrored displays... if the display configuration is
// changed it is possible (and likely) that the current active display
// in a mirrored configuration (as identified by the OpenGL Display Mask)
// will change if the mirrored display is removed.
// This is due to the preference of selection the external display as
// the active display. This may affect full screen apps which should
// always detect display configuration changes and respond accordingly.
void CheckOpenGLCaps (CGDisplayCount maxDisplays,
GLCaps * aDisplayCaps,
CGDisplayCount * dspyCnt);</pre>
<!--googleoff: index -->
</td>
</tr>
</table>
<!-- END WIDE COLUMN -->
<!-- END MAIN CONTENT -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><div style="width: 100%; height: 1px; background-color: #919699; margin-top: 5px; margin-bottom: 15px"></div></td>
</tr>
<tr>
<td align="center"><br/>
<table border="0" cellpadding="0" cellspacing="0" class="graybox">
<tr>
<th>Did this document help you?</th>
</tr>
<tr>
<td>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=1&url=/samplecode/GLCarbon1ContextPbuffer/listing4.html%3Fid%3DDTS10003144-1.0&media=dvd" target=_new>Yes</a>: Tell us what works for you.</div>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=2&url=/samplecode/GLCarbon1ContextPbuffer/listing4.html%3Fid%3DDTS10003144-1.0&media=dvd" target=_new>It’s good, but:</a> Report typos, inaccuracies, and so forth.</div>
<div><a href="http://developer.apple.com/feedback/?v=3&url=/samplecode/GLCarbon1ContextPbuffer/listing4.html%3Fid%3DDTS10003144-1.0&media=dvd" target=_new>It wasn’t helpful</a>: Tell us what would have helped.</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- START BOTTOM APPLE NAVIGATION -->
<!--#include virtual="/includes/footer"-->
<!-- END BOTTOM APPLE NAVIGATION -->
<!-- START CENTER CLOSE -->
</center>
<!-- END CENTER CLOSE -->
</body>
</html>