Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
angle
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
angle
Commits
9a84912a
Commit
9a84912a
authored
Nov 12, 2011
by
daniel@transgaming.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for glGetnUniform*vEXT
Trac #18608 Signed-off-by: Nicolas Capens git-svn-id:
https://angleproject.googlecode.com/svn/trunk@870
736b8ea6-26fd-11df-bfd4-992fa37f6226
parent
47c60053
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
111 additions
and
6 deletions
+111
-6
Program.cpp
src/libGLESv2/Program.cpp
+22
-2
Program.h
src/libGLESv2/Program.h
+2
-2
libGLESv2.cpp
src/libGLESv2/libGLESv2.cpp
+87
-2
No files found.
src/libGLESv2/Program.cpp
View file @
9a84912a
...
@@ -911,7 +911,7 @@ bool Program::setUniform4iv(GLint location, GLsizei count, const GLint *v)
...
@@ -911,7 +911,7 @@ bool Program::setUniform4iv(GLint location, GLsizei count, const GLint *v)
return
true
;
return
true
;
}
}
bool
Program
::
getUniformfv
(
GLint
location
,
GLfloat
*
params
)
bool
Program
::
getUniformfv
(
GLint
location
,
GL
sizei
*
bufSize
,
GL
float
*
params
)
{
{
if
(
location
<
0
||
location
>=
(
int
)
mUniformIndex
.
size
())
if
(
location
<
0
||
location
>=
(
int
)
mUniformIndex
.
size
())
{
{
...
@@ -920,6 +920,16 @@ bool Program::getUniformfv(GLint location, GLfloat *params)
...
@@ -920,6 +920,16 @@ bool Program::getUniformfv(GLint location, GLfloat *params)
Uniform
*
targetUniform
=
mUniforms
[
mUniformIndex
[
location
].
index
];
Uniform
*
targetUniform
=
mUniforms
[
mUniformIndex
[
location
].
index
];
// sized queries -- ensure the provided buffer is large enough
if
(
bufSize
)
{
int
requiredBytes
=
UniformExternalSize
(
targetUniform
->
type
);
if
(
*
bufSize
<
requiredBytes
)
{
return
false
;
}
}
switch
(
targetUniform
->
type
)
switch
(
targetUniform
->
type
)
{
{
case
GL_FLOAT_MAT2
:
case
GL_FLOAT_MAT2
:
...
@@ -970,7 +980,7 @@ bool Program::getUniformfv(GLint location, GLfloat *params)
...
@@ -970,7 +980,7 @@ bool Program::getUniformfv(GLint location, GLfloat *params)
return
true
;
return
true
;
}
}
bool
Program
::
getUniformiv
(
GLint
location
,
GLint
*
params
)
bool
Program
::
getUniformiv
(
GLint
location
,
GL
sizei
*
bufSize
,
GL
int
*
params
)
{
{
if
(
location
<
0
||
location
>=
(
int
)
mUniformIndex
.
size
())
if
(
location
<
0
||
location
>=
(
int
)
mUniformIndex
.
size
())
{
{
...
@@ -979,6 +989,16 @@ bool Program::getUniformiv(GLint location, GLint *params)
...
@@ -979,6 +989,16 @@ bool Program::getUniformiv(GLint location, GLint *params)
Uniform
*
targetUniform
=
mUniforms
[
mUniformIndex
[
location
].
index
];
Uniform
*
targetUniform
=
mUniforms
[
mUniformIndex
[
location
].
index
];
// sized queries -- ensure the provided buffer is large enough
if
(
bufSize
)
{
int
requiredBytes
=
UniformExternalSize
(
targetUniform
->
type
);
if
(
*
bufSize
<
requiredBytes
)
{
return
false
;
}
}
switch
(
targetUniform
->
type
)
switch
(
targetUniform
->
type
)
{
{
case
GL_FLOAT_MAT2
:
case
GL_FLOAT_MAT2
:
...
...
src/libGLESv2/Program.h
View file @
9a84912a
...
@@ -98,8 +98,8 @@ class Program
...
@@ -98,8 +98,8 @@ class Program
bool
setUniform3iv
(
GLint
location
,
GLsizei
count
,
const
GLint
*
v
);
bool
setUniform3iv
(
GLint
location
,
GLsizei
count
,
const
GLint
*
v
);
bool
setUniform4iv
(
GLint
location
,
GLsizei
count
,
const
GLint
*
v
);
bool
setUniform4iv
(
GLint
location
,
GLsizei
count
,
const
GLint
*
v
);
bool
getUniformfv
(
GLint
location
,
GLfloat
*
params
);
bool
getUniformfv
(
GLint
location
,
GL
sizei
*
bufSize
,
GL
float
*
params
);
bool
getUniformiv
(
GLint
location
,
GLint
*
params
);
bool
getUniformiv
(
GLint
location
,
GL
sizei
*
bufSize
,
GL
int
*
params
);
GLint
getDxDepthRangeLocation
()
const
;
GLint
getDxDepthRangeLocation
()
const
;
GLint
getDxDepthLocation
()
const
;
GLint
getDxDepthLocation
()
const
;
...
...
src/libGLESv2/libGLESv2.cpp
View file @
9a84912a
...
@@ -3470,6 +3470,46 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
...
@@ -3470,6 +3470,46 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
}
}
}
}
void
__stdcall
glGetnUniformfvEXT
(
GLuint
program
,
GLint
location
,
GLsizei
bufSize
,
GLfloat
*
params
)
{
EVENT
(
"(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLfloat* params = 0x%0.8p)"
,
program
,
location
,
bufSize
,
params
);
try
{
if
(
bufSize
<
0
)
{
return
error
(
GL_INVALID_VALUE
);
}
gl
::
Context
*
context
=
gl
::
getNonLostContext
();
if
(
context
)
{
if
(
program
==
0
)
{
return
error
(
GL_INVALID_VALUE
);
}
gl
::
Program
*
programObject
=
context
->
getProgram
(
program
);
if
(
!
programObject
||
!
programObject
->
isLinked
())
{
return
error
(
GL_INVALID_OPERATION
);
}
if
(
!
programObject
->
getUniformfv
(
location
,
&
bufSize
,
params
))
{
return
error
(
GL_INVALID_OPERATION
);
}
}
}
catch
(
std
::
bad_alloc
&
)
{
return
error
(
GL_OUT_OF_MEMORY
);
}
}
void
__stdcall
glGetUniformfv
(
GLuint
program
,
GLint
location
,
GLfloat
*
params
)
void
__stdcall
glGetUniformfv
(
GLuint
program
,
GLint
location
,
GLfloat
*
params
)
{
{
EVENT
(
"(GLuint program = %d, GLint location = %d, GLfloat* params = 0x%0.8p)"
,
program
,
location
,
params
);
EVENT
(
"(GLuint program = %d, GLint location = %d, GLfloat* params = 0x%0.8p)"
,
program
,
location
,
params
);
...
@@ -3492,7 +3532,52 @@ void __stdcall glGetUniformfv(GLuint program, GLint location, GLfloat* params)
...
@@ -3492,7 +3532,52 @@ void __stdcall glGetUniformfv(GLuint program, GLint location, GLfloat* params)
return
error
(
GL_INVALID_OPERATION
);
return
error
(
GL_INVALID_OPERATION
);
}
}
if
(
!
programObject
->
getUniformfv
(
location
,
params
))
if
(
!
programObject
->
getUniformfv
(
location
,
NULL
,
params
))
{
return
error
(
GL_INVALID_OPERATION
);
}
}
}
catch
(
std
::
bad_alloc
&
)
{
return
error
(
GL_OUT_OF_MEMORY
);
}
}
void
__stdcall
glGetnUniformivEXT
(
GLuint
program
,
GLint
location
,
GLsizei
bufSize
,
GLint
*
params
)
{
EVENT
(
"(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLint* params = 0x%0.8p)"
,
program
,
location
,
bufSize
,
params
);
try
{
if
(
bufSize
<
0
)
{
return
error
(
GL_INVALID_VALUE
);
}
gl
::
Context
*
context
=
gl
::
getNonLostContext
();
if
(
context
)
{
if
(
program
==
0
)
{
return
error
(
GL_INVALID_VALUE
);
}
gl
::
Program
*
programObject
=
context
->
getProgram
(
program
);
if
(
!
programObject
||
!
programObject
->
isLinked
())
{
return
error
(
GL_INVALID_OPERATION
);
}
if
(
!
programObject
)
{
return
error
(
GL_INVALID_OPERATION
);
}
if
(
!
programObject
->
getUniformiv
(
location
,
&
bufSize
,
params
))
{
{
return
error
(
GL_INVALID_OPERATION
);
return
error
(
GL_INVALID_OPERATION
);
}
}
...
@@ -3531,7 +3616,7 @@ void __stdcall glGetUniformiv(GLuint program, GLint location, GLint* params)
...
@@ -3531,7 +3616,7 @@ void __stdcall glGetUniformiv(GLuint program, GLint location, GLint* params)
return
error
(
GL_INVALID_OPERATION
);
return
error
(
GL_INVALID_OPERATION
);
}
}
if
(
!
programObject
->
getUniformiv
(
location
,
params
))
if
(
!
programObject
->
getUniformiv
(
location
,
NULL
,
params
))
{
{
return
error
(
GL_INVALID_OPERATION
);
return
error
(
GL_INVALID_OPERATION
);
}
}
...
...
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