Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
f0975acb
Commit
f0975acb
authored
Nov 28, 2006
by
Derk-Jan Hartman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* const warning fixes. formatting fixes (squash them tabs)
parent
b087885b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
207 additions
and
205 deletions
+207
-205
modules/video_output/opengl.c
modules/video_output/opengl.c
+207
-205
No files found.
modules/video_output/opengl.c
View file @
f0975acb
...
...
@@ -7,7 +7,7 @@
* Authors: Cyril Deguet <asmax@videolan.org>
* Gildas Bazin <gbazin@videolan.org>
* Eric Petit <titer@m0k.org>
*
Cedric Cocquebert <cedric.cocquebert@supelec.fr>
*
Cedric Cocquebert <cedric.cocquebert@supelec.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -90,37 +90,37 @@
#define OPENGL_EFFECT_NONE 1
#define OPENGL_EFFECT_CUBE 2
#define OPENGL_EFFECT_TRANSPARENT_CUBE 4
#if defined( HAVE_GL_GLU_H ) || defined(
SYS_DARWIN
)
#define OPENGL_MORE_EFFECT
8
#if defined( HAVE_GL_GLU_H ) || defined(
__APPLE__
)
#define OPENGL_MORE_EFFECT
8
#endif
#ifdef OPENGL_MORE_EFFECT
#include <math.h>
#ifdef SYS_DARWIN
#include <OpenGL/glu.h>
#else
#include <GL/glu.h>
#endif
#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
#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
char
*
ppsz_effects
[]
=
{
"none"
,
"cube"
,
"transparent-cube"
,
"cylinder"
,
"torus"
,
"sphere"
,
"SQUAREXY"
,
"SQUARER"
,
"ASINXY"
,
"ASINR"
,
"SINEXY"
,
"SINER"
};
static
char
*
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"
)
};
#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
*
ppsz_effects
[]
=
{
"none"
,
"cube"
,
"transparent-cube"
,
"cylinder"
,
"torus"
,
"sphere"
,
"SQUAREXY"
,
"SQUARER"
,
"ASINXY"
,
"ASINR"
,
"SINEXY"
,
"SINER"
};
static
const
char
*
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
/*****************************************************************************
...
...
@@ -137,14 +137,17 @@ static int Control ( vout_thread_t *, int, va_list );
static
inline
int
GetAlignedSize
(
int
);
static
int
InitTextures
(
vout_thread_t
*
);
static
int
SendEvents
(
vlc_object_t
*
,
char
const
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
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
(
float
,
int
,
float
,
float
,
int
,
int
,
int
,
int
,
double
*
,
double
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
#ifdef OPENGL_MORE_EFFECT
#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" )
...
...
@@ -167,9 +170,9 @@ static int SendEvents( vlc_object_t *, char const *,
"Several visual OpenGL effects are available." )
#ifndef OPENGL_MORE_EFFECT
static
char
*
ppsz_effects
[]
=
{
static
c
onst
c
har
*
ppsz_effects
[]
=
{
"none"
,
"cube"
,
"transparent-cube"
};
static
char
*
ppsz_effects_text
[]
=
{
static
c
onst
c
har
*
ppsz_effects_text
[]
=
{
N_
(
"None"
),
N_
(
"Cube"
),
N_
(
"Transparent Cube"
)
};
#endif
...
...
@@ -202,7 +205,7 @@ vlc_module_begin();
set_callbacks
(
CreateVout
,
DestroyVout
);
add_string
(
"opengl-effect"
,
"none"
,
NULL
,
EFFECT_TEXT
,
EFFECT_LONGTEXT
,
VLC_FALSE
);
change_string_list
(
ppsz_effects
,
ppsz_effects_text
,
0
);
change_string_list
(
ppsz_effects
,
ppsz_effects_text
,
0
);
vlc_module_end
();
/*****************************************************************************
...
...
@@ -459,19 +462,19 @@ static int Init( vout_thread_t *p_vout )
else
{
#ifdef OPENGL_MORE_EFFECT
p_sys
->
i_effect
=
3
;
p_sys
->
i_effect
=
3
;
while
((
strcmp
(
val
.
psz_string
,
ppsz_effects
[
p_sys
->
i_effect
])
)
&&
(
pow
(
2
,
p_sys
->
i_effect
)
<
INIFILE
))
{
p_sys
->
i_effect
++
;
}
if
(
pow
(
2
,
p_sys
->
i_effect
)
<
INIFILE
)
p_sys
->
i_effect
=
pow
(
2
,
p_sys
->
i_effect
);
else
if
(
strcmp
(
val
.
psz_string
,
ppsz_effects
[
p_sys
->
i_effect
]))
{
msg_Warn
(
p_vout
,
"no valid opengl effect provided, using "
"
\"
none
\"
"
);
p_sys
->
i_effect
=
OPENGL_EFFECT_NONE
;
}
if
(
pow
(
2
,
p_sys
->
i_effect
)
<
INIFILE
)
p_sys
->
i_effect
=
pow
(
2
,
p_sys
->
i_effect
);
else
if
(
strcmp
(
val
.
psz_string
,
ppsz_effects
[
p_sys
->
i_effect
]))
{
msg_Warn
(
p_vout
,
"no valid opengl effect provided, using "
"
\"
none
\"
"
);
p_sys
->
i_effect
=
OPENGL_EFFECT_NONE
;
}
#else
msg_Warn
(
p_vout
,
"no valid opengl effect provided, using "
"
\"
none
\"
"
);
...
...
@@ -492,7 +495,7 @@ static int Init( vout_thread_t *p_vout )
glTranslatef
(
0
.
0
,
0
.
0
,
-
5
.
0
);
}
#ifdef OPENGL_MORE_EFFECT
else
else
{
/* Set the perpective */
glMatrixMode
(
GL_PROJECTION
);
...
...
@@ -502,11 +505,11 @@ static int Init( vout_thread_t *p_vout )
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
);
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
)
...
...
@@ -613,15 +616,15 @@ static int Manage( vout_thread_t *p_vout )
{
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
:
case
CYLINDER
:
case
TORUS
:
case
SPHERE
:
case
SQUAREXY
:
case
SQUARER
:
case
ASINXY
:
case
ASINR
:
case
SINEXY
:
case
SINER
:
#endif
glEnable
(
GL_CULL_FACE
);
break
;
...
...
@@ -645,21 +648,21 @@ static int Manage( vout_thread_t *p_vout )
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
);
}
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
}
...
...
@@ -741,107 +744,106 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
/*****************************************************************************
* Transform: Calculate the distorted grid coordinates
*****************************************************************************/
void
Transform
(
float
p
,
int
distortion
,
float
width
,
float
height
,
int
i
,
int
j
,
int
i_visible_width
,
int
i_visible_height
,
double
*
ix
,
double
*
iy
)
static
void
Transform
(
float
p
,
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
;
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
=
(
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
);
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
)
{
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
;
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
;
}
default:
xnew
=
x
;
ynew
=
y
;
}
*
ix
=
width
*
(
xnew
+
1
)
/
(
2
.
0
);
*
iy
=
height
*
(
ynew
+
1
)
/
(
2
.
0
);
*
ix
=
width
*
(
xnew
+
1
)
/
(
2
.
0
);
*
iy
=
height
*
(
ynew
+
1
)
/
(
2
.
0
);
}
/*****************************************************************************
* Z_Compute: Calculate the Z-coordinate
*****************************************************************************/
float
Z_Compute
(
float
p
,
int
distortion
,
float
x
,
float
y
)
static
float
Z_Compute
(
float
p
,
int
distortion
,
float
x
,
float
y
)
{
float
f_z
=
0
.
0
;
double
d_p
=
p
/
100
.
0
;
float
f_z
=
0
.
0
;
double
d_p
=
p
/
100
.
0
;
switch
(
distortion
)
{
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
;
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
;
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
...
...
@@ -897,55 +899,55 @@ static void DisplayVideo( vout_thread_t *p_vout, picture_t *p_pic )
}
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
;
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
;
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
(
f_p
,
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
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
(
f_p
,
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
);
...
...
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