Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
65b3ba57
Commit
65b3ba57
authored
Dec 20, 2008
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
opengl: Remove opengl effects as agreed at the VDD '08.
Saves about 500 lines of codes.
parent
57662f50
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
438 deletions
+7
-438
modules/video_output/opengl.c
modules/video_output/opengl.c
+7
-438
No files found.
modules/video_output/opengl.c
View file @
65b3ba57
...
...
@@ -90,43 +90,6 @@
# define GL_CLAMP_TO_EDGE 0x812F
#endif
/* OpenGL effects */
#define OPENGL_EFFECT_NONE 1
#define OPENGL_EFFECT_CUBE 2
#define OPENGL_EFFECT_TRANSPARENT_CUBE 4
#if defined( HAVE_GL_GLU_H ) || defined( __APPLE__ )
#define OPENGL_MORE_EFFECT 8
#endif
#ifdef OPENGL_MORE_EFFECT
#include <math.h>
#ifdef __APPLE__
#include <OpenGL/glu.h>
#else
#include <GL/glu.h>
#endif
/* 3D MODEL */
#define CYLINDER 8
#define TORUS 16
#define SPHERE 32
/*GRID2D TRANSFORMATION */
#define SQUAREXY 64
#define SQUARER 128
#define ASINXY 256
#define ASINR 512
#define SINEXY 1024
#define SINER 2048
#define INIFILE 4096 // not used, just for mark end ...
#define SIGN(x) (x < 0 ? (-1) : 1)
#define PID2 1.570796326794896619231322
static
const
char
*
const
ppsz_effects
[]
=
{
"none"
,
"cube"
,
"transparent-cube"
,
"cylinder"
,
"torus"
,
"sphere"
,
"SQUAREXY"
,
"SQUARER"
,
"ASINXY"
,
"ASINR"
,
"SINEXY"
,
"SINER"
};
static
const
char
*
const
ppsz_effects_text
[]
=
{
N_
(
"None"
),
N_
(
"Cube"
),
N_
(
"Transparent Cube"
),
N_
(
"Cylinder"
),
N_
(
"Torus"
),
N_
(
"Sphere"
),
N_
(
"SQUAREXY"
),
N_
(
"SQUARER"
),
N_
(
"ASINXY"
),
N_
(
"ASINR"
),
N_
(
"SINEXY"
),
N_
(
"SINER"
)
};
#endif
/*****************************************************************************
* Vout interface
*****************************************************************************/
...
...
@@ -145,42 +108,8 @@ static int InitTextures ( vout_thread_t * );
static
int
SendEvents
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
#ifdef OPENGL_MORE_EFFECT
static
float
Z_Compute
(
float
,
int
,
float
,
float
);
static
void
Transform
(
int
,
float
,
float
,
int
,
int
,
int
,
int
,
double
*
,
double
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
#define ACCURACY_TEXT N_( "OpenGL sampling accuracy " )
#define ACCURACY_LONGTEXT N_( "Select the accuracy of 3D object sampling(1 = min and 10 = max)" )
#define RADIUS_TEXT N_( "OpenGL Cylinder radius" )
#define RADIUS_LONGTEXT N_( "Radius of the OpenGL cylinder effect, if enabled" )
#define POV_X_TEXT N_("Point of view x-coordinate")
#define POV_X_LONGTEXT N_("Point of view (X coordinate) of the cube/cylinder "\
"effect, if enabled.")
#define POV_Y_TEXT N_("Point of view y-coordinate")
#define POV_Y_LONGTEXT N_("Point of view (Y coordinate) of the cube/cylinder "\
"effect, if enabled.")
#define POV_Z_TEXT N_("Point of view z-coordinate")
#define POV_Z_LONGTEXT N_("Point of view (Z coordinate) of the cube/cylinder "\
"effect, if enabled.")
#endif
#define PROVIDER_TEXT N_("OpenGL Provider")
#define PROVIDER_LONGTEXT N_("Allows you to modify what OpenGL provider should be used")
#define SPEED_TEXT N_( "OpenGL cube rotation speed" )
#define SPEED_LONGTEXT N_( "Rotation speed of the OpenGL cube effect, if " \
"enabled." )
#define EFFECT_TEXT N_("Effect")
#define EFFECT_LONGTEXT N_( \
"Several visual OpenGL effects are available." )
#ifndef OPENGL_MORE_EFFECT
static
const
char
*
const
ppsz_effects
[]
=
{
"none"
,
"cube"
,
"transparent-cube"
};
static
const
char
*
const
ppsz_effects_text
[]
=
{
N_
(
"None"
),
N_
(
"Cube"
),
N_
(
"Transparent Cube"
)
};
#endif
vlc_module_begin
()
set_shortname
(
"OpenGL"
)
...
...
@@ -193,28 +122,10 @@ vlc_module_begin ()
set_capability
(
"video output"
,
20
)
#endif
add_shortcut
(
"opengl"
)
add_float
(
"opengl-cube-speed"
,
2
.
0
,
NULL
,
SPEED_TEXT
,
SPEED_LONGTEXT
,
true
);
#ifdef OPENGL_MORE_EFFECT
add_integer_with_range
(
"opengl-accuracy"
,
4
,
1
,
10
,
NULL
,
ACCURACY_TEXT
,
ACCURACY_LONGTEXT
,
true
);
add_float_with_range
(
"opengl-pov-x"
,
0
.
0
,
-
1
.
0
,
1
.
0
,
NULL
,
POV_X_TEXT
,
POV_X_LONGTEXT
,
true
);
add_float_with_range
(
"opengl-pov-y"
,
0
.
0
,
-
1
.
0
,
1
.
0
,
NULL
,
POV_Y_TEXT
,
POV_Y_LONGTEXT
,
true
);
add_float_with_range
(
"opengl-pov-z"
,
-
1
.
0
,
-
1
.
0
,
1
.
0
,
NULL
,
POV_Z_TEXT
,
POV_Z_LONGTEXT
,
true
);
add_float
(
"opengl-cylinder-radius"
,
-
100
.
0
,
NULL
,
RADIUS_TEXT
,
RADIUS_LONGTEXT
,
true
);
#endif
/* Allow opengl provider plugin selection */
add_string
(
"opengl-provider"
,
"default"
,
NULL
,
PROVIDER_TEXT
,
PROVIDER_LONGTEXT
,
true
);
set_callbacks
(
CreateVout
,
DestroyVout
)
add_string
(
"opengl-effect"
,
"none"
,
NULL
,
EFFECT_TEXT
,
EFFECT_LONGTEXT
,
false
);
change_string_list
(
ppsz_effects
,
ppsz_effects_text
,
0
);
vlc_module_end
()
/*****************************************************************************
...
...
@@ -233,8 +144,6 @@ struct vout_sys_t
int
i_tex_height
;
GLuint
p_textures
[
2
];
int
i_effect
;
float
f_speed
;
float
f_radius
;
};
...
...
@@ -253,8 +162,6 @@ static int CreateVout( vlc_object_t *p_this )
if
(
p_sys
==
NULL
)
return
VLC_ENOMEM
;
var_Create
(
p_vout
,
"opengl-effect"
,
VLC_VAR_STRING
|
VLC_VAR_DOINHERIT
);
p_sys
->
i_index
=
0
;
#ifdef __APPLE__
p_sys
->
i_tex_width
=
p_vout
->
fmt_in
.
i_width
;
...
...
@@ -305,9 +212,6 @@ static int CreateVout( vlc_object_t *p_this )
return
VLC_ENOOBJ
;
}
p_sys
->
f_speed
=
var_CreateGetFloat
(
p_vout
,
"opengl-cube-speed"
);
p_sys
->
f_radius
=
var_CreateGetFloat
(
p_vout
,
"opengl-cylinder-radius"
);
p_vout
->
pf_init
=
Init
;
p_vout
->
pf_end
=
End
;
p_vout
->
pf_manage
=
Manage
;
...
...
@@ -446,83 +350,6 @@ static int Init( vout_thread_t *p_vout )
glClearColor
(
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
);
glClear
(
GL_COLOR_BUFFER_BIT
);
/* Check if the user asked for useless visual effects */
var_Get
(
p_vout
,
"opengl-effect"
,
&
val
);
if
(
!
val
.
psz_string
||
!
strcmp
(
val
.
psz_string
,
"none"
))
{
p_sys
->
i_effect
=
OPENGL_EFFECT_NONE
;
}
else
if
(
!
strcmp
(
val
.
psz_string
,
"cube"
)
)
{
p_sys
->
i_effect
=
OPENGL_EFFECT_CUBE
;
glEnable
(
GL_CULL_FACE
);
}
else
if
(
!
strcmp
(
val
.
psz_string
,
"transparent-cube"
)
)
{
p_sys
->
i_effect
=
OPENGL_EFFECT_TRANSPARENT_CUBE
;
glDisable
(
GL_DEPTH_TEST
);
glEnable
(
GL_BLEND
);
glBlendFunc
(
GL_SRC_ALPHA
,
GL_ONE
);
}
else
{
#ifdef OPENGL_MORE_EFFECT
long
i
,
size
=
sizeof
(
ppsz_effects
)
/
sizeof
(
*
ppsz_effects
);
p_sys
->
i_effect
=
OPENGL_EFFECT_NONE
;
for
(
i
=
3
;
i
<
size
;
i
++
)
{
if
(
!
strcmp
(
val
.
psz_string
,
ppsz_effects
[
i
]))
{
p_sys
->
i_effect
=
1
<<
i
;
break
;
}
}
if
(
p_sys
->
i_effect
==
OPENGL_EFFECT_NONE
)
{
msg_Warn
(
p_vout
,
"no valid opengl effect provided, using "
"
\"
none
\"
"
);
}
#else
msg_Warn
(
p_vout
,
"no valid opengl effect provided, using "
"
\"
none
\"
"
);
p_sys
->
i_effect
=
OPENGL_EFFECT_NONE
;
#endif
}
free
(
val
.
psz_string
);
if
(
p_sys
->
i_effect
&
(
OPENGL_EFFECT_CUBE
|
OPENGL_EFFECT_TRANSPARENT_CUBE
)
)
{
/* Set the perpective */
glMatrixMode
(
GL_PROJECTION
);
glLoadIdentity
();
glFrustum
(
-
1
.
0
,
1
.
0
,
-
1
.
0
,
1
.
0
,
3
.
0
,
20
.
0
);
glMatrixMode
(
GL_MODELVIEW
);
glLoadIdentity
();
glTranslatef
(
0
.
0
,
0
.
0
,
-
5
.
0
);
}
#ifdef OPENGL_MORE_EFFECT
else
{
/* Set the perpective */
glMatrixMode
(
GL_PROJECTION
);
glLoadIdentity
();
glFrustum
(
-
1
.
0
,
1
.
0
,
-
1
.
0
,
1
.
0
,
3
.
0
,
20
.
0
);
glMatrixMode
(
GL_MODELVIEW
);
glLoadIdentity
();
glTranslatef
(
0
.
0
,
0
.
0
,
-
3
.
0
);
float
f_pov_x
,
f_pov_y
,
f_pov_z
;
f_pov_x
=
var_CreateGetFloat
(
p_vout
,
"opengl-pov-x"
);
f_pov_y
=
var_CreateGetFloat
(
p_vout
,
"opengl-pov-y"
);
f_pov_z
=
var_CreateGetFloat
(
p_vout
,
"opengl-pov-z"
);
gluLookAt
(
0
,
0
,
0
,
f_pov_x
,
f_pov_y
,
f_pov_z
,
0
,
1
,
0
);
}
#endif
if
(
p_sys
->
p_vout
->
pf_unlock
)
{
p_sys
->
p_vout
->
pf_unlock
(
p_sys
->
p_vout
);
...
...
@@ -621,59 +448,6 @@ static int Manage( vout_thread_t *p_vout )
if
(
i_fullscreen_change
)
{
InitTextures
(
p_vout
);
switch
(
p_sys
->
i_effect
)
{
case
OPENGL_EFFECT_CUBE
:
#ifdef OPENGL_MORE_EFFECT
case
CYLINDER
:
case
TORUS
:
case
SPHERE
:
case
SQUAREXY
:
case
SQUARER
:
case
ASINXY
:
case
ASINR
:
case
SINEXY
:
case
SINER
:
#endif
glEnable
(
GL_CULL_FACE
);
break
;
case
OPENGL_EFFECT_TRANSPARENT_CUBE
:
glDisable
(
GL_DEPTH_TEST
);
glEnable
(
GL_BLEND
);
glBlendFunc
(
GL_SRC_ALPHA
,
GL_ONE
);
break
;
}
if
(
p_sys
->
i_effect
&
(
OPENGL_EFFECT_CUBE
|
OPENGL_EFFECT_TRANSPARENT_CUBE
)
)
{
/* Set the perpective */
glMatrixMode
(
GL_PROJECTION
);
glLoadIdentity
();
glFrustum
(
-
1
.
0
,
1
.
0
,
-
1
.
0
,
1
.
0
,
3
.
0
,
20
.
0
);
glMatrixMode
(
GL_MODELVIEW
);
glLoadIdentity
();
glTranslatef
(
0
.
0
,
0
.
0
,
-
5
.
0
);
}
#ifdef OPENGL_MORE_EFFECT
else
{
glMatrixMode
(
GL_PROJECTION
);
glLoadIdentity
();
glFrustum
(
-
1
.
0
,
1
.
0
,
-
1
.
0
,
1
.
0
,
3
.
0
,
20
.
0
);
glMatrixMode
(
GL_MODELVIEW
);
glLoadIdentity
();
glTranslatef
(
0
.
0
,
0
.
0
,
-
3
.
0
);
float
f_pov_x
,
f_pov_y
,
f_pov_z
;
f_pov_x
=
var_CreateGetFloat
(
p_vout
,
"opengl-pov-x"
);
f_pov_y
=
var_CreateGetFloat
(
p_vout
,
"opengl-pov-y"
);
f_pov_z
=
var_CreateGetFloat
(
p_vout
,
"opengl-pov-z"
);
gluLookAt
(
0
,
0
,
0
,
f_pov_x
,
f_pov_y
,
f_pov_z
,
0
,
1
,
0
);
}
#endif
}
if
(
p_sys
->
p_vout
->
pf_unlock
)
...
...
@@ -755,115 +529,6 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
}
}
#ifdef OPENGL_MORE_EFFECT
/*****************************************************************************
* Transform: Calculate the distorted grid coordinates
*****************************************************************************/
static
void
Transform
(
int
distortion
,
float
width
,
float
height
,
int
i
,
int
j
,
int
i_visible_width
,
int
i_visible_height
,
double
*
ix
,
double
*
iy
)
{
double
x
,
y
,
xnew
,
ynew
;
double
r
,
theta
,
rnew
,
thetanew
;
x
=
(
double
)
i
*
(
width
/
((
double
)
i_visible_width
));
y
=
(
double
)
j
*
(
height
/
((
double
)
i_visible_height
));
x
=
(
2
.
0
*
(
double
)
x
/
width
)
-
1
;
y
=
(
2
.
0
*
(
double
)
y
/
height
)
-
1
;
xnew
=
x
;
ynew
=
y
;
r
=
sqrt
(
x
*
x
+
y
*
y
);
theta
=
atan2
(
y
,
x
);
switch
(
distortion
)
{
/* GRID2D TRANSFORMATION */
case
SINEXY
:
xnew
=
sin
(
PID2
*
x
);
ynew
=
sin
(
PID2
*
y
);
break
;
case
SINER
:
rnew
=
sin
(
PID2
*
r
);
thetanew
=
theta
;
xnew
=
rnew
*
cos
(
thetanew
);
ynew
=
rnew
*
sin
(
thetanew
);
break
;
case
SQUAREXY
:
xnew
=
x
*
x
*
SIGN
(
x
);
ynew
=
y
*
y
*
SIGN
(
y
);
break
;
case
SQUARER
:
rnew
=
r
*
r
;
thetanew
=
theta
;
xnew
=
rnew
*
cos
(
thetanew
);
ynew
=
rnew
*
sin
(
thetanew
);
break
;
case
ASINXY
:
xnew
=
asin
(
x
)
/
PID2
;
ynew
=
asin
(
y
)
/
PID2
;
break
;
case
ASINR
:
rnew
=
asin
(
r
)
/
PID2
;
thetanew
=
theta
;
xnew
=
rnew
*
cos
(
thetanew
);
ynew
=
rnew
*
sin
(
thetanew
);
break
;
/* OTHER WAY: 3D MODEL */
default:
xnew
=
x
;
ynew
=
y
;
}
*
ix
=
width
*
(
xnew
+
1
)
/
(
2
.
0
);
*
iy
=
height
*
(
ynew
+
1
)
/
(
2
.
0
);
}
/*****************************************************************************
* Z_Compute: Calculate the Z-coordinate
*****************************************************************************/
static
float
Z_Compute
(
float
p
,
int
distortion
,
float
x
,
float
y
)
{
float
f_z
=
0
.
0
;
double
d_p
=
p
/
100
.
0
;
switch
(
distortion
)
{
/* 3D MODEL */
case
CYLINDER
:
if
(
d_p
>
0
)
f_z
=
(
1
-
d_p
*
d_p
)
/
(
2
*
d_p
)
-
sqrt
(
fabs
((
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
*
(
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
-
x
*
x
));
else
f_z
=
(
1
-
d_p
*
d_p
)
/
(
2
*
d_p
)
+
d_p
+
sqrt
(
fabs
((
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
*
(
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
-
x
*
x
));
break
;
case
TORUS
:
if
(
d_p
>
0
)
f_z
=
(
1
-
d_p
*
d_p
)
/
(
d_p
)
-
sqrt
(
fabs
((
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
*
(
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
-
x
*
x
))
-
sqrt
(
fabs
((
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
*
(
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
-
y
*
y
));
else
f_z
=
(
1
-
d_p
*
d_p
)
/
(
d_p
)
+
2
*
d_p
+
sqrt
(
fabs
((
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
*
(
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
-
x
*
x
))
+
sqrt
(
fabs
((
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
*
(
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
-
y
*
y
));
break
;
case
SPHERE
:
if
(
d_p
>
0
)
f_z
=
(
1
-
d_p
*
d_p
)
/
(
2
*
d_p
)
-
sqrt
(
fabs
((
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
*
(
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
-
x
*
x
-
y
*
y
));
else
f_z
=
(
1
-
d_p
*
d_p
)
/
(
2
*
d_p
)
+
d_p
+
sqrt
(
fabs
((
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
*
(
d_p
*
d_p
+
1
)
/
(
2
*
d_p
)
-
x
*
x
-
y
*
y
));
break
;
/* OTHER WAY: GRID2D TRANSFORMATION */
case
SINEXY
:;
case
SINER
:
case
SQUAREXY
:
case
SQUARER
:;
case
ASINXY
:
case
ASINR
:
f_z
=
0
.
0
;
break
;
default:
f_z
=
0
.
0
;
}
return
f_z
;
}
#endif
/*****************************************************************************
* DisplayVideo: displays previously rendered output
*****************************************************************************/
...
...
@@ -904,109 +569,13 @@ static void DisplayVideo( vout_thread_t *p_vout, picture_t *p_pic )
glClear
(
GL_COLOR_BUFFER_BIT
);
if
(
p_sys
->
i_effect
==
OPENGL_EFFECT_NONE
)
{
glEnable
(
VLCGL_TARGET
);
glBegin
(
GL_POLYGON
);
glTexCoord2f
(
f_x
,
f_y
);
glVertex2f
(
-
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex2f
(
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex2f
(
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex2f
(
-
1
.
0
,
-
1
.
0
);
glEnd
();
}
else
#ifdef OPENGL_MORE_EFFECT
if
((
p_sys
->
i_effect
>
OPENGL_EFFECT_TRANSPARENT_CUBE
)
||
((
p_sys
->
i_effect
==
OPENGL_EFFECT_NONE
)))
{
unsigned
int
i_i
,
i_j
;
unsigned
int
i_accuracy
=
config_GetInt
(
p_vout
,
"opengl-accuracy"
);
unsigned
int
i_n
=
pow
(
2
,
i_accuracy
);
unsigned
int
i_n_x
=
(
p_vout
->
fmt_out
.
i_visible_width
/
(
i_n
*
2
));
unsigned
int
i_n_y
=
(
p_vout
->
fmt_out
.
i_visible_height
/
i_n
);
double
d_x
,
d_y
;
int
i_distortion
=
p_sys
->
i_effect
;
float
f_p
=
p_sys
->
f_radius
;
glEnable
(
VLCGL_TARGET
);
glBegin
(
GL_QUADS
);
for
(
i_i
=
0
;
i_i
<
p_vout
->
fmt_out
.
i_visible_width
;
i_i
+=
i_n_x
)
{
if
(
i_i
==
i_n_x
*
i_n
/
2
)
i_n_x
+=
p_vout
->
fmt_out
.
i_visible_width
%
i_n
;
if
((
i_i
==
(
p_vout
->
fmt_out
.
i_visible_width
/
i_n
)
*
i_n
/
2
+
i_n_x
)
&&
(
p_vout
->
fmt_out
.
i_visible_width
/
i_n
!=
i_n_x
))
i_n_x
-=
p_vout
->
fmt_out
.
i_visible_width
%
i_n
;
int
i_m
;
int
i_index_max
=
0
;
for
(
i_j
=
0
;
i_j
<
p_vout
->
fmt_out
.
i_visible_height
;
i_j
+=
i_n_y
)
{
if
(
i_j
==
i_n_y
*
i_n
/
2
)
i_n_y
+=
p_vout
->
fmt_out
.
i_visible_height
%
i_n
;
if
((
i_j
==
(
p_vout
->
fmt_out
.
i_visible_height
/
i_n
)
*
i_n
/
2
+
i_n_y
)
&&
(
p_vout
->
fmt_out
.
i_visible_height
/
i_n
!=
i_n_y
))
i_n_y
-=
p_vout
->
fmt_out
.
i_visible_height
%
i_n
;
for
(
i_m
=
i_index_max
;
i_m
<
i_index_max
+
4
;
i_m
++
)
{
int
i_k
=
((
i_m
%
4
)
==
1
)
||
((
i_m
%
4
)
==
2
);
int
i_l
=
((
i_m
%
4
)
==
2
)
||
((
i_m
%
4
)
==
3
);
Transform
(
i_distortion
,
f_width
,
f_height
,
i_i
+
i_k
*
i_n_x
,
i_j
+
i_l
*
i_n_y
,
p_vout
->
fmt_out
.
i_visible_width
,
p_vout
->
fmt_out
.
i_visible_height
,
&
d_x
,
&
d_y
);
glTexCoord2f
(
f_x
+
d_x
,
f_y
+
d_y
);
d_x
=
-
1
.
0
+
2
.
0
*
((
double
)(
i_k
*
i_n_x
+
i_i
)
/
(
double
)
p_vout
->
fmt_out
.
i_visible_width
);
d_y
=
1
.
0
-
2
.
0
*
(((
double
)
i_l
*
i_n_y
+
i_j
)
/
(
double
)
p_vout
->
fmt_out
.
i_visible_height
);
glVertex3f
((
float
)
d_x
,
(
float
)
d_y
,
Z_Compute
(
f_p
,
i_distortion
,
(
float
)
d_x
,
(
float
)
d_y
));
}
}
}
glEnd
();
}
else
#endif
{
glRotatef
(
0
.
5
*
p_sys
->
f_speed
,
0
.
3
,
0
.
5
,
0
.
7
);
glEnable
(
VLCGL_TARGET
);
glBegin
(
GL_QUADS
);
/* Front */
glTexCoord2f
(
f_x
,
f_y
);
glVertex3f
(
-
1
.
0
,
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex3f
(
-
1
.
0
,
-
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex3f
(
1
.
0
,
-
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex3f
(
1
.
0
,
1
.
0
,
1
.
0
);
/* Left */
glTexCoord2f
(
f_x
,
f_y
);
glVertex3f
(
-
1
.
0
,
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex3f
(
-
1
.
0
,
-
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex3f
(
-
1
.
0
,
-
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex3f
(
-
1
.
0
,
1
.
0
,
1
.
0
);
/* Back */
glTexCoord2f
(
f_x
,
f_y
);
glVertex3f
(
1
.
0
,
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex3f
(
1
.
0
,
-
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex3f
(
-
1
.
0
,
-
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex3f
(
-
1
.
0
,
1
.
0
,
-
1
.
0
);
/* Right */
glTexCoord2f
(
f_x
,
f_y
);
glVertex3f
(
1
.
0
,
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex3f
(
1
.
0
,
-
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex3f
(
1
.
0
,
-
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex3f
(
1
.
0
,
1
.
0
,
-
1
.
0
);
/* Top */
glTexCoord2f
(
f_x
,
f_y
);
glVertex3f
(
-
1
.
0
,
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex3f
(
-
1
.
0
,
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex3f
(
1
.
0
,
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex3f
(
1
.
0
,
1
.
0
,
-
1
.
0
);
/* Bottom */
glTexCoord2f
(
f_x
,
f_y
);
glVertex3f
(
-
1
.
0
,
-
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex3f
(
-
1
.
0
,
-
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex3f
(
1
.
0
,
-
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex3f
(
1
.
0
,
-
1
.
0
,
1
.
0
);
glEnd
();
}
glEnable
(
VLCGL_TARGET
);
glBegin
(
GL_POLYGON
);
glTexCoord2f
(
f_x
,
f_y
);
glVertex2f
(
-
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex2f
(
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex2f
(
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex2f
(
-
1
.
0
,
-
1
.
0
);
glEnd
();
glDisable
(
VLCGL_TARGET
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment