Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
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 @@
...
@@ -90,43 +90,6 @@
# define GL_CLAMP_TO_EDGE 0x812F
# define GL_CLAMP_TO_EDGE 0x812F
#endif
#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
* Vout interface
*****************************************************************************/
*****************************************************************************/
...
@@ -145,42 +108,8 @@ static int InitTextures ( vout_thread_t * );
...
@@ -145,42 +108,8 @@ static int InitTextures ( vout_thread_t * );
static
int
SendEvents
(
vlc_object_t
*
,
char
const
*
,
static
int
SendEvents
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
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_TEXT N_("OpenGL Provider")
#define PROVIDER_LONGTEXT N_("Allows you to modify what OpenGL provider should be used")
#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
()
vlc_module_begin
()
set_shortname
(
"OpenGL"
)
set_shortname
(
"OpenGL"
)
...
@@ -193,28 +122,10 @@ vlc_module_begin ()
...
@@ -193,28 +122,10 @@ vlc_module_begin ()
set_capability
(
"video output"
,
20
)
set_capability
(
"video output"
,
20
)
#endif
#endif
add_shortcut
(
"opengl"
)
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 */
/* Allow opengl provider plugin selection */
add_string
(
"opengl-provider"
,
"default"
,
NULL
,
PROVIDER_TEXT
,
add_string
(
"opengl-provider"
,
"default"
,
NULL
,
PROVIDER_TEXT
,
PROVIDER_LONGTEXT
,
true
);
PROVIDER_LONGTEXT
,
true
);
set_callbacks
(
CreateVout
,
DestroyVout
)
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
()
vlc_module_end
()
/*****************************************************************************
/*****************************************************************************
...
@@ -233,8 +144,6 @@ struct vout_sys_t
...
@@ -233,8 +144,6 @@ struct vout_sys_t
int
i_tex_height
;
int
i_tex_height
;
GLuint
p_textures
[
2
];
GLuint
p_textures
[
2
];
int
i_effect
;
float
f_speed
;
float
f_speed
;
float
f_radius
;
float
f_radius
;
};
};
...
@@ -253,8 +162,6 @@ static int CreateVout( vlc_object_t *p_this )
...
@@ -253,8 +162,6 @@ static int CreateVout( vlc_object_t *p_this )
if
(
p_sys
==
NULL
)
if
(
p_sys
==
NULL
)
return
VLC_ENOMEM
;
return
VLC_ENOMEM
;
var_Create
(
p_vout
,
"opengl-effect"
,
VLC_VAR_STRING
|
VLC_VAR_DOINHERIT
);
p_sys
->
i_index
=
0
;
p_sys
->
i_index
=
0
;
#ifdef __APPLE__
#ifdef __APPLE__
p_sys
->
i_tex_width
=
p_vout
->
fmt_in
.
i_width
;
p_sys
->
i_tex_width
=
p_vout
->
fmt_in
.
i_width
;
...
@@ -305,9 +212,6 @@ static int CreateVout( vlc_object_t *p_this )
...
@@ -305,9 +212,6 @@ static int CreateVout( vlc_object_t *p_this )
return
VLC_ENOOBJ
;
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_init
=
Init
;
p_vout
->
pf_end
=
End
;
p_vout
->
pf_end
=
End
;
p_vout
->
pf_manage
=
Manage
;
p_vout
->
pf_manage
=
Manage
;
...
@@ -446,83 +350,6 @@ static int Init( vout_thread_t *p_vout )
...
@@ -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
);
glClearColor
(
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
);
glClear
(
GL_COLOR_BUFFER_BIT
);
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
)
if
(
p_sys
->
p_vout
->
pf_unlock
)
{
{
p_sys
->
p_vout
->
pf_unlock
(
p_sys
->
p_vout
);
p_sys
->
p_vout
->
pf_unlock
(
p_sys
->
p_vout
);
...
@@ -621,59 +448,6 @@ static int Manage( vout_thread_t *p_vout )
...
@@ -621,59 +448,6 @@ static int Manage( vout_thread_t *p_vout )
if
(
i_fullscreen_change
)
if
(
i_fullscreen_change
)
{
{
InitTextures
(
p_vout
);
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
)
if
(
p_sys
->
p_vout
->
pf_unlock
)
...
@@ -755,115 +529,6 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
...
@@ -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
* DisplayVideo: displays previously rendered output
*****************************************************************************/
*****************************************************************************/
...
@@ -904,109 +569,13 @@ static void DisplayVideo( vout_thread_t *p_vout, picture_t *p_pic )
...
@@ -904,109 +569,13 @@ static void DisplayVideo( vout_thread_t *p_vout, picture_t *p_pic )
glClear
(
GL_COLOR_BUFFER_BIT
);
glClear
(
GL_COLOR_BUFFER_BIT
);
if
(
p_sys
->
i_effect
==
OPENGL_EFFECT_NONE
)
glEnable
(
VLCGL_TARGET
);
{
glBegin
(
GL_POLYGON
);
glEnable
(
VLCGL_TARGET
);
glTexCoord2f
(
f_x
,
f_y
);
glVertex2f
(
-
1
.
0
,
1
.
0
);
glBegin
(
GL_POLYGON
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex2f
(
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_x
,
f_y
);
glVertex2f
(
-
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex2f
(
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_width
,
f_y
);
glVertex2f
(
1
.
0
,
1
.
0
);
glTexCoord2f
(
f_x
,
f_height
);
glVertex2f
(
-
1
.
0
,
-
1
.
0
);
glTexCoord2f
(
f_width
,
f_height
);
glVertex2f
(
1
.
0
,
-
1
.
0
);
glEnd
();
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
();
}
glDisable
(
VLCGL_TARGET
);
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