view release on metacpan or search on metacpan
BleedingOpenGL.pm view on Meta::CPAN
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
=head1 NAME
Acme::MITHALDU::BleedingOpenG - bleeding edge OpenGL experiments - you WILL get cut
=head1 DESCRIPTION
This is a fork of the official L<OpenGL> in which i implement modern OpenGL
functions not available in L<OpenGL> crudely, cluelessly and without any error
checking. The only reason this is on CPAN is to make development of
L<Microidium|https://github.com/wchristian/Microidium> a little easier.
You'd be insane to use this. I make no guarantees to not break this horribly at
any point.
Seriously, just use L<OpenGL>.
(PS: I'll probably be force-pushing the repo at various points too.)
FreeGLUT/freeglut-Readme.txt view on Meta::CPAN
Building 64 bit applications is almost identical to building 32 bit applications.
When you use the configuration manager to add the x64 platform, its easiest to
copy the settings from the Win32 platform. If you do so, its then only necessary
to change the Additional Library Directories configuration so that it
references the directory containing the 64 bit import library rather
than the 32 bit one.
Problems?
If you have problems using this package (compiler / linker errors etc.), please
check that you have followed all of the steps in this readme file correctly.
Almost all of the problems which are reported with these packages are due to
missing a step or not doing it correctly, for example trying to build a 32 bit
app against the 64 bit import library. If you have followed all of the steps
correctly but your application still fails to build, try building a very simple
but functional program (the example at
http://www.transmissionzero.co.uk/computing/using-glut-with-mingw/ works fine
with MSVC). A lot of people try to build very complex applications after
installing these packages, and often the error is with the application code or
other library dependencies rather than freeglut.
If you still cant get it working after trying to compile a simple application,
then please get in touch via http://www.transmissionzero.co.uk/contact/,
providing as much detail as you can. Please dont complain to the freeglut guys
unless youre sure its a freeglut bug, and have reproduced the issue after
compiling freeglut from the latest SVN versionif thats still the case, Im sure
they would appreciate a bug report or a patch.
Release_Notes view on Meta::CPAN
+------------------------------------------------------------------------+
General Notes:
* Fixes a number of bugs since the last release. Thanks to
Christian Walde, Olaf Dabrunz, and Alessandro Ranellucci for
their contributions.
Highlights:
* Fix item_count error in OpenGL::Array implementation
* Fix POGL bug #12 re thread safety
* Fix POGL bug #16 "Free to wrong pool" caused by calloc()
+------------------------------------------------------------------------+
| OpenGL-0.6703
+------------------------------------------------------------------------+
fragment.arb view on Meta::CPAN
!!ARBfp1.0
PARAM surfacecolor = program.local[5];
TEMP color;
MUL color, fragment.texcoord[0].y, 2.0;
ADD color, 1.0, -color;
ABS color, color;
ADD color, 1.01, -color; # Some cards have a rounding error
MOV color.a, 1.0;
MUL color, color, surfacecolor;
MOV result.color, color;
END
fragment.cg view on Meta::CPAN
float4 color : COLOR;
};
uniform float4 surfacecolor;
// fragment shader main entry
FragOut main(FragIn IN)
{
FragOut OUT;
float1 v = 2.0 * IN.texcoord.y;
v = 1.01f - abs(1.0f - v); // Some cards have a rounding error
OUT.color = float4(v,v,v, 1.0f) * surfacecolor;
return OUT;
}
fragment.glsl view on Meta::CPAN
uniform vec4 surfacecolor;
void main (void)
{
float v = 2.0 * gl_TexCoord[0].y;
v = 1.01 - abs(1.0 - v); // Some cards have a rounding error
gl_FragColor = vec4(v,v,v, 1.0) * surfacecolor;
}
glext_consts.h view on Meta::CPAN
#ifndef NO_GL_KHR_blend_equation_advanced_coherent
i(GL_BLEND_ADVANCED_COHERENT_KHR)
#endif /* GL_KHR_blend_equation_advanced_coherent */
#ifndef NO_GL_KHR_context_flush_control
#endif /* GL_KHR_context_flush_control */
#ifndef NO_GL_KHR_debug
#endif /* GL_KHR_debug */
#ifndef NO_GL_KHR_no_error
i(GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR)
#endif /* GL_KHR_no_error */
#ifndef NO_GL_KHR_robust_buffer_access_behavior
#endif /* GL_KHR_robust_buffer_access_behavior */
#ifndef NO_GL_KHR_robustness
i(GL_CONTEXT_ROBUST_ACCESS)
#endif /* GL_KHR_robustness */
#ifndef NO_GL_KHR_texture_compression_astc_hdr
i(GL_COMPRESSED_RGBA_ASTC_4x4_KHR)
glext_procs.h view on Meta::CPAN
#define GL_KHR_context_flush_control 1
#endif
#endif /* GL_KHR_context_flush_control */
#ifndef NO_GL_KHR_debug
#ifndef GL_KHR_debug
#define GL_KHR_debug 1
#endif
#endif /* GL_KHR_debug */
#ifndef NO_GL_KHR_no_error
#ifndef GL_KHR_no_error
#define GL_KHR_no_error 1
#endif
#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
#endif /* GL_KHR_no_error */
#ifndef NO_GL_KHR_robust_buffer_access_behavior
#ifndef GL_KHR_robust_buffer_access_behavior
#define GL_KHR_robust_buffer_access_behavior 1
#endif
#endif /* GL_KHR_robust_buffer_access_behavior */
#ifndef NO_GL_KHR_robustness
#ifndef GL_KHR_robustness
#define GL_KHR_robustness 1
include/GL/freeglut_std.h view on Meta::CPAN
# define WIN32_LEAN_AND_MEAN 1
# endif
# ifndef NOMINMAX
# define NOMINMAX
# endif
# include <windows.h>
/* Windows static library */
# ifdef FREEGLUT_STATIC
#error Static linking is not supported with this build. Please remove the FREEGLUT_STATIC preprocessor directive, or download the source code from http://freeglut.sf.net/ and build against that.
/* Windows shared library (DLL) */
# else
# define FGAPIENTRY __stdcall
# if defined(FREEGLUT_EXPORTS)
# define FGAPI __declspec(dllexport)
# else
# define FGAPI __declspec(dllimport)
include/GL/glext.h view on Meta::CPAN
#endif /* GL_KHR_blend_equation_advanced_coherent */
#ifndef GL_KHR_context_flush_control
#define GL_KHR_context_flush_control 1
#endif /* GL_KHR_context_flush_control */
#ifndef GL_KHR_debug
#define GL_KHR_debug 1
#endif /* GL_KHR_debug */
#ifndef GL_KHR_no_error
#define GL_KHR_no_error 1
#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008
#endif /* GL_KHR_no_error */
#ifndef GL_KHR_robust_buffer_access_behavior
#define GL_KHR_robust_buffer_access_behavior 1
#endif /* GL_KHR_robust_buffer_access_behavior */
#ifndef GL_KHR_robustness
#define GL_KHR_robustness 1
#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
#endif /* GL_KHR_robustness */
include/GL/glu.h view on Meta::CPAN
**
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to restrictions
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
** rights reserved under the Copyright Laws of the United States.
*/
/*
** Return the error string associated with a particular error code.
** This will return 0 for an invalid error code.
**
** The generic function prototype that can be compiled for ANSI or Unicode
** is defined as follows:
**
** LPCTSTR APIENTRY gluErrorStringWIN (GLenum errCode);
*/
#ifdef UNICODE
#define gluErrorStringWIN(errCode) ((LPCSTR) gluErrorUnicodeStringEXT(errCode))
#else
#define gluErrorStringWIN(errCode) ((LPCWSTR) gluErrorString(errCode))
include/GL/glu.h view on Meta::CPAN
/* gluNurbsCallback */
typedef void (CALLBACK* GLUnurbsErrorProc) (GLenum);
/**** Generic constants ****/
/* Version */
#define GLU_VERSION_1_1 1
#define GLU_VERSION_1_2 1
/* Errors: (return value 0 = no error) */
#define GLU_INVALID_ENUM 100900
#define GLU_INVALID_VALUE 100901
#define GLU_OUT_OF_MEMORY 100902
#define GLU_INCOMPATIBLE_GL_VERSION 100903
/* StringName */
#define GLU_VERSION 100800
#define GLU_EXTENSIONS 100801
/* Boolean */
#define ResizeRedirectMask (1L<<18)
#define SubstructureNotifyMask (1L<<19)
#define SubstructureRedirectMask (1L<<20)
#define FocusChangeMask (1L<<21)
#define PropertyChangeMask (1L<<22)
#define ColormapChangeMask (1L<<23)
#define OwnerGrabButtonMask (1L<<24)
/* Event names. Used in "type" field in XEvent structures. Not to be
confused with event masks above. They start from 2 because 0 and 1
are reserved in the protocol for errors and replies. */
#define KeyPress 2
#define KeyRelease 3
#define ButtonPress 4
#define ButtonRelease 5
#define MotionNotify 6
#define EnterNotify 7
#define LeaveNotify 8
#define FocusIn 9
#define FocusOut 10
MappingPointer */
int first_keycode; /* first keycode */
int count; /* defines range of change w. first_keycode*/
} XMappingEvent;
typedef struct {
int type;
Display *display; /* Display the event was read from */
XID resourceid; /* resource id */
unsigned long serial; /* serial number of failed request */
unsigned char error_code; /* error code of failed request */
unsigned char request_code; /* Major op-code of failed request */
unsigned char minor_code; /* Minor op-code of failed request */
} XErrorEvent;
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display;/* Display the event was read from */
Window window; /* window on which event was requested in event mask */
XConfigureRequestEvent xconfigurerequest;
XCirculateEvent xcirculate;
XCirculateRequestEvent xcirculaterequest;
XPropertyEvent xproperty;
XSelectionClearEvent xselectionclear;
XSelectionRequestEvent xselectionrequest;
XSelectionEvent xselection;
XColormapEvent xcolormap;
XClientMessageEvent xclient;
XMappingEvent xmapping;
XErrorEvent xerror;
XKeymapEvent xkeymap;
long pad[24];
} XEvent;
void InitSys(void);
Bool XQueryPointer(
Display* display,
Window w,
Window* root_return,
Window* child_return,
pogl_gl_top.xs view on Meta::CPAN
{
/* Load shader program */
glGenProgramsARB(1,&oga->affine_handle);
glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB,oga->affine_handle);
glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB,
GL_PROGRAM_FORMAT_ASCII_ARB, strlen(affine_prog),affine_prog);
/* Validate shader program */
if (!glIsProgramARB(oga->affine_handle))
{
GLint errorPos;
glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB,&errorPos);
if (errorPos < 0) errorPos = strlen(affine_prog);
croak("Affine fragment program error\n%s",&affine_prog[errorPos]);
}
}
glEnable(GL_FRAGMENT_PROGRAM_ARB);
}
/* Disable affine shader program */
void disable_affine(oga_struct * oga)
{
if (!oga) return;
if (oga->affine_handle) glDisable(GL_FRAGMENT_PROGRAM_ARB);
pogl_glu.xs view on Meta::CPAN
#define CALLBACK
#endif
struct PGLUtess {
GLUtesselator * triangulator;
#ifdef GLU_VERSION_1_2
SV * begin_callback;
SV * edgeFlag_callback;
SV * vertex_callback;
SV * end_callback;
SV * error_callback;
SV * combine_callback;
#endif
bool do_colors;
bool do_normals;
bool use_vertex_data;
GLdouble * vertex_data; /* used during non-GLU_TESS_VERTEX_DATA */
SV * polygon_data;
AV * vertex_datas;
AV * tess_datas;
};
pogl_glu.xs view on Meta::CPAN
XPUSHs(sv_2mortal(newSVnv(vd[j])));
}
if (t->do_normals)
for (i = 0; i < 3; i++)
XPUSHs(sv_2mortal(newSVnv(vd[j++])));
if (t->polygon_data) XPUSHs((SV*)t->polygon_data);
}
end_tess_marshaller()
/* Declare gluTess ERROR */
begin_tess_marshaller(error, error, (GLenum errno_, void * gl_polygon_data), "Missing tess callback for error", \
warn("Tesselation error: %s", gluErrorString(errno_)); \
)
XPUSHs(sv_2mortal(newSViv(errno_)));
end_tess_marshaller()
/* Declare gluTess ERROR_DATA */
begin_tess_marshaller(error_data, error, (GLenum errno_, void * gl_polygon_data), "Missing tess callback for error_data", \
warn("Tesselation error: %s", gluErrorString(errno_)); \
)
XPUSHs(sv_2mortal(newSViv(errno_)));
if (t->polygon_data) XPUSHs((SV*)t->polygon_data);
end_tess_marshaller()
/* Declare gluTess COMBINE AND COMBINE_DATA */
void CALLBACK _s_marshal_glu_t_callback_combine (GLdouble coords[3], void * vertex_data[4],
GLfloat weight[4], void ** out_data,
void * gl_polygon_data)
{
pogl_glu.xs view on Meta::CPAN
gluDeleteTess(tess->triangulator);
#ifdef GLU_VERSION_1_2
if (tess->begin_callback)
SvREFCNT_dec(tess->begin_callback);
if (tess->edgeFlag_callback)
SvREFCNT_dec(tess->edgeFlag_callback);
if (tess->vertex_callback)
SvREFCNT_dec(tess->vertex_callback);
if (tess->end_callback)
SvREFCNT_dec(tess->end_callback);
if (tess->error_callback)
SvREFCNT_dec(tess->error_callback);
if (tess->combine_callback)
SvREFCNT_dec(tess->combine_callback);
#endif
delete_vertex_datas()
delete_tess_datas()
delete_polygon_data()
free(tess);
}
#// gluDisk($quad, $inner, $outer, $slices, $loops);
void
gluDisk(quad, inner, outer, slices, loops)
GLUquadricObj * quad
GLdouble inner
GLdouble outer
GLint slices
GLint loops
#//# gluErrorString($error);
char *
gluErrorString(error)
GLenum error
CODE:
RETVAL = (char*)gluErrorString(error);
OUTPUT:
RETVAL
#// gluGetNurbsProperty_p($nurb, $property);
GLfloat
gluGetNurbsProperty_p(nurb, property)
GLUnurbsObj * nurb
GLenum property
CODE:
{
pogl_glu.xs view on Meta::CPAN
break;
case GLU_TESS_VERTEX:
case GLU_TESS_VERTEX_DATA:
if (tess->vertex_callback) {
SvREFCNT_dec(tess->vertex_callback);
tess->vertex_callback = 0;
}
break;
case GLU_TESS_ERROR:
case GLU_TESS_ERROR_DATA:
if (tess->error_callback) {
SvREFCNT_dec(tess->error_callback);
tess->error_callback = 0;
}
break;
case GLU_TESS_COMBINE:
case GLU_TESS_COMBINE_DATA:
if (tess->combine_callback) {
SvREFCNT_dec(tess->combine_callback);
tess->combine_callback = 0;
}
break;
case GLU_TESS_EDGE_FLAG:
pogl_glu.xs view on Meta::CPAN
tess->use_vertex_data = TRUE;
tess->vertex_callback = callback;
gluTessCallback(tess->triangulator, GLU_TESS_VERTEX, (void (CALLBACK*)()) _s_marshal_glu_t_callback_vertex);
break;
case GLU_TESS_VERTEX_DATA:
tess->use_vertex_data = FALSE;
tess->vertex_callback = callback;
gluTessCallback(tess->triangulator, GLU_TESS_VERTEX_DATA, (void (CALLBACK*)()) _s_marshal_glu_t_callback_vertex_data);
break;
case GLU_TESS_ERROR:
tess->error_callback = callback;
gluTessCallback(tess->triangulator, GLU_TESS_ERROR_DATA, (void (CALLBACK*)()) _s_marshal_glu_t_callback_error);
break;
case GLU_TESS_ERROR_DATA:
tess->error_callback = callback;
gluTessCallback(tess->triangulator, GLU_TESS_ERROR_DATA, (void (CALLBACK*)()) _s_marshal_glu_t_callback_error_data);
break;
case GLU_TESS_COMBINE:
case GLU_TESS_COMBINE_DATA:
tess->combine_callback = callback;
gluTessCallback(tess->triangulator, GLU_TESS_COMBINE_DATA, (void (CALLBACK*)()) _s_marshal_glu_t_callback_combine);
break;
case GLU_TESS_EDGE_FLAG:
tess->edgeFlag_callback = callback;
gluTessCallback(tess->triangulator, GLU_TESS_EDGE_FLAG_DATA, (void (CALLBACK*)()) _s_marshal_glu_t_callback_edgeFlag);
break;
--version show version
--patch=file write one patch file with changes
--copy=suffix write changed copies with suffix
--diff=program use diff program and options
--compat-version=version provide compatibility with Perl version
--cplusplus accept C++ comments
--quiet don't output anything except fatal errors
--nodiag don't show diagnostics
--nohints don't show hints
--nochanges don't suggest changes
--nofilter don't filter input files
--strip strip all script and doc functionality from
newppp.h
--list-provided list provided API
--list-unsupported list unsupported API
=head2 --cplusplus
Usually, F<newppp.h> will detect C++ style comments and
replace them with C style comments for portability reasons.
Using this option instructs F<newppp.h> to leave C++
comments untouched.
=head2 --quiet
Be quiet. Don't print anything except fatal errors.
=head2 --nodiag
Don't output any diagnostic messages. Only portability
alerts will be printed.
=head2 --nohints
Don't output any hints. Hints often contain useful portability
notes. Warnings will still be displayed.
PL_compiling|5.004050||p
PL_copline|5.014000||p
PL_curcop|5.004050||p
PL_curstash|5.004050||p
PL_debstash|5.004050||p
PL_defgv|5.004050||p
PL_diehook|5.004050||p
PL_dirty|5.004050||p
PL_dowarn|||pn
PL_errgv|5.004050||p
PL_error_count|5.014000||p
PL_expect|5.014000||p
PL_hexdigit|5.005000||p
PL_hints|5.005000||p
PL_in_my_stash|5.014000||p
PL_in_my|5.014000||p
PL_keyword_plugin||5.011002|
PL_last_in_gv|||n
PL_laststatval|5.005000||p
PL_lex_state|5.014000||p
PL_lex_stuff|5.014000||p
PUSHmortal|5.009002||p
PUSHn|||
PUSHp|||
PUSHs|||
PUSHu|5.004000||p
PUTBACK|||
PerlIO_clearerr||5.007003|
PerlIO_close||5.007003|
PerlIO_context_layers||5.009004|
PerlIO_eof||5.007003|
PerlIO_error||5.007003|
PerlIO_fileno||5.007003|
PerlIO_fill||5.007003|
PerlIO_flush||5.007003|
PerlIO_get_base||5.007003|
PerlIO_get_bufsiz||5.007003|
PerlIO_get_cnt||5.007003|
PerlIO_get_ptr||5.007003|
PerlIO_read||5.007003|
PerlIO_seek||5.007003|
PerlIO_set_cnt||5.007003|
ptr_table_free||5.009005|
ptr_table_new||5.009005|
ptr_table_split||5.009005|
ptr_table_store||5.009005|
push_scope|||
put_byte|||
pv_display|5.006000||p
pv_escape|5.009004||p
pv_pretty|5.009004||p
pv_uni_display||5.007003|
qerror|||
qsortsvu|||
re_compile||5.009005|
re_croak2|||
re_dup_guts|||
re_intuit_start||5.009005|
re_intuit_string||5.006000|
readpipe_override|||
realloc||5.007002|n
reentrant_free|||
reentrant_init|||
vwarner||5.006000|
vwarn||5.006000|
wait4pid|||
warn_nocontext|||vn
warn_sv||5.013001|
warner_nocontext|||vn
warner|5.006000|5.004000|pv
warn|||v
watch|||
whichsig|||
with_queued_errors|||
write_no_mem|||
write_to_stderr|||
xmldump_all_perl|||
xmldump_all|||
xmldump_attr|||
xmldump_eval|||
xmldump_form|||
xmldump_indent|||v
xmldump_packsubs_perl|||
xmldump_packsubs|||
xmldump_sub_perl|||
xmldump_sub|||
xmldump_vindent|||
xs_apiversion_bootcheck|||
xs_version_bootcheck|||
yyerror|||
yylex|||
yyparse|||
yyunlex|||
yywarn|||
);
if (exists $opt{'list-unsupported'}) {
my $f;
for $f (sort { lc $a cmp lc $b } keys %API) {
next unless $API{$f}{todo};
}
my $s = $warnings != 1 ? 's' : '';
my $warn = $warnings ? " ($warnings warning$s)" : '';
info("Analysis completed$warn");
if ($file{changes}) {
if (exists $opt{copy}) {
my $newfile = "$filename$opt{copy}";
if (-e $newfile) {
error("'$newfile' already exists, refusing to write copy of '$filename'");
}
else {
local *F;
if (open F, ">$newfile") {
info("Writing copy of '$filename' with changes to '$newfile'");
print F $c;
close F;
}
else {
error("Cannot open '$newfile' for writing: $!");
}
}
}
elsif (exists $opt{patch} || $opt{changes}) {
if (exists $opt{patch}) {
unless ($patch_opened) {
if (open PATCH, ">$opt{patch}") {
$patch_opened = 1;
}
else {
error("Cannot open '$opt{patch}' for writing: $!");
delete $opt{patch};
$opt{changes} = 1;
goto fallback;
}
}
mydiff(\*PATCH, $filename, $c);
}
else {
fallback:
info("Suggested changes:");
if (!defined $diff) {
$diff = run_diff('diff -u', $file, $str);
}
if (!defined $diff) {
$diff = run_diff('diff', $file, $str);
}
if (!defined $diff) {
error("Cannot generate a diff. Please install Text::Diff or use --copy.");
return;
}
print F $diff;
}
sub run_diff
{
my($prog, $file, $str) = @_;
my $tmp = 'dppptemp';
$diff .= $_;
}
close F;
unlink $tmp;
return $diff;
}
unlink $tmp;
}
else {
error("Cannot open '$tmp' for writing: $!");
}
return undef;
}
sub rec_depend
{
my($func, $seen) = @_;
return () unless exists $depends{$func};
$seen = {%{$seen||{}}};
$opt{quiet} and return;
$opt{diag} and print @_, "\n";
}
sub warning
{
$opt{quiet} and return;
print "*** ", @_, "\n";
}
sub error
{
print "*** ERROR: ", @_, "\n";
}
my %given_hints;
my %given_warnings;
sub hint
{
$opt{quiet} and return;
my $func = shift;
# endif
#endif
#define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10))
#define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION))
/* It is very unlikely that anyone will try to use this with Perl 6
(or greater), but who knows.
*/
#if PERL_REVISION != 5
# error newppp.h only works with Perl version 5
#endif /* PERL_REVISION != 5 */
#ifndef dTHR
# define dTHR dNOOP
#endif
#ifndef dTHX
# define dTHX dNOOP
#endif
#ifndef dTHXa
# define dTHXa(x) dNOOP
# define PL_compiling compiling
# define PL_copline copline
# define PL_curcop curcop
# define PL_curstash curstash
# define PL_debstash debstash
# define PL_defgv defgv
# define PL_diehook diehook
# define PL_dirty dirty
# define PL_dowarn dowarn
# define PL_errgv errgv
# define PL_error_count error_count
# define PL_expect expect
# define PL_hexdigit hexdigit
# define PL_hints hints
# define PL_in_my in_my
# define PL_laststatval laststatval
# define PL_lex_state lex_state
# define PL_lex_stuff lex_stuff
# define PL_linestr linestr
# define PL_na na
# define PL_perl_destruct_level perl_destruct_level
# define PL_rsfp D_PPP_my_PL_parser_var(rsfp)
# define PL_rsfp_filters D_PPP_my_PL_parser_var(rsfp_filters)
# define PL_linestr D_PPP_my_PL_parser_var(linestr)
# define PL_bufptr D_PPP_my_PL_parser_var(bufptr)
# define PL_bufend D_PPP_my_PL_parser_var(bufend)
# define PL_lex_state D_PPP_my_PL_parser_var(lex_state)
# define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff)
# define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf)
# define PL_in_my D_PPP_my_PL_parser_var(in_my)
# define PL_in_my_stash D_PPP_my_PL_parser_var(in_my_stash)
# define PL_error_count D_PPP_my_PL_parser_var(error_count)
#else
/* ensure that PL_parser != NULL and cannot be dereferenced */
# define PL_parser ((void *) 1)
#endif
#ifndef mPUSHs
# define mPUSHs(s) PUSHs(sv_2mortal(s))
# else
# define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \
(flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags))
# endif
#endif
/* Replace perl_eval_pv with eval_pv */
#ifndef eval_pv
#if defined(NEED_eval_pv)
static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
static
#else
extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
#endif
#ifdef eval_pv
# undef eval_pv
#endif
#define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b)
#define Perl_eval_pv DPPP_(my_eval_pv)
#if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL)
SV*
DPPP_(my_eval_pv)(char *p, I32 croak_on_error)
{
dSP;
SV* sv = newSVpv(p, 0);
PUSHMARK(sp);
eval_sv(sv, G_SCALAR);
SvREFCNT_dec(sv);
SPAGAIN;
sv = POPs;
PUTBACK;
if (croak_on_error && SvTRUE(GvSV(errgv)))
croak(SvPVx(GvSV(errgv), na));
return sv;
}
#endif
#endif
#ifndef vload_module
#if defined(NEED_vload_module)
}
# Lazy Metalic Fragment shader
my $FragProg = qq
{!!ARBfp1.0
PARAM surfacecolor = program.local[5];
TEMP color;
MUL color, fragment.texcoord[0].y, 2.0;
ADD color, 1.0, -color;
ABS color, color;
ADD color, 1.01, -color; #Some cards have a rounding error
MOV color.a, 1.0;
MUL color, color, surfacecolor;
MOV result.color, color;
END
};
glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, $FragProgID);
glProgramStringARB_p(GL_FRAGMENT_PROGRAM_ARB, $FragProg);
if (DO_TESTS)
utils/mingw.bat view on Meta::CPAN
if exist glversion.txt del glversion.txt&echo deleted glversion.txt
if exist glversion.exe del glversion.exe&echo deleted glversion.exe
if exist glversion.o del glversion.o&echo deleted glversion.o
goto END
:BUILD
echo.
echo compiling glversion.c
gcc -DHAVE_FREEGLUT -c glversion.c
if errorlevel 1 goto ERROR
echo linking glversion.o
gcc -o glversion.exe glversion.o -lopengl32 -L../FreeGLUT -lfreeglut
if errorlevel 1 goto ERROR
echo generating glversion.txt
glversion > glversion.txt
if errorlevel 1 goto ERROR
goto END
:ERROR
echo build error!
echo.
:END
utils/strawberry.bat view on Meta::CPAN
if exist glversion.txt del glversion.txt&echo deleted glversion.txt
if exist glversion.exe del glversion.exe&echo deleted glversion.exe
if exist glversion.o del glversion.o&echo deleted glversion.o
goto END
:BUILD
echo.
echo compiling glversion.c
gcc -DHAVE_FREEGLUT -DIS_STRAWBERRY -c glversion.c
if errorlevel 1 goto ERROR
echo linking glversion.o
gcc -o glversion.exe glversion.o -lopengl32 -L%drive%/c/lib -lglut
if errorlevel 1 goto ERROR
echo generating glversion.txt
glversion > glversion.txt
if errorlevel 1 goto ERROR
goto END
:ERROR
echo build error!
echo.
:END