Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
fa93b724
Commit
fa93b724
authored
Nov 30, 2011
by
Vladislav Vinogradov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
minor
parent
1a1d167b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
52 deletions
+71
-52
opengl_interop.hpp
modules/core/include/opencv2/core/opengl_interop.hpp
+14
-12
opengl_interop.cpp
modules/core/src/opengl_interop.cpp
+57
-40
No files found.
modules/core/include/opencv2/core/opengl_interop.hpp
View file @
fa93b724
...
...
@@ -90,11 +90,10 @@ namespace cv
gpu
::
GpuMat
mapDevice
();
void
unmapDevice
();
int
rows
;
int
cols
;
inline
Size
size
()
const
{
return
Size
(
cols
,
rows
);
}
inline
bool
empty
()
const
{
return
rows
==
0
||
cols
==
0
;
}
inline
int
rows
()
const
{
return
rows_
;
}
inline
int
cols
()
const
{
return
cols_
;
}
inline
Size
size
()
const
{
return
Size
(
cols_
,
rows_
);
}
inline
bool
empty
()
const
{
return
rows_
==
0
||
cols_
==
0
;
}
inline
int
type
()
const
{
return
type_
;
}
inline
int
depth
()
const
{
return
CV_MAT_DEPTH
(
type_
);
}
...
...
@@ -105,6 +104,8 @@ namespace cv
inline
Usage
usage
()
const
{
return
usage_
;
}
private
:
int
rows_
;
int
cols_
;
int
type_
;
Usage
usage_
;
...
...
@@ -138,11 +139,10 @@ namespace cv
void
bind
()
const
;
void
unbind
()
const
;
int
rows
;
int
cols
;
inline
Size
size
()
const
{
return
Size
(
cols
,
rows
);
}
inline
bool
empty
()
const
{
return
rows
==
0
||
cols
==
0
;
}
inline
int
rows
()
const
{
return
rows_
;
}
inline
int
cols
()
const
{
return
cols_
;
}
inline
Size
size
()
const
{
return
Size
(
cols_
,
rows_
);
}
inline
bool
empty
()
const
{
return
rows_
==
0
||
cols_
==
0
;
}
inline
int
type
()
const
{
return
type_
;
}
inline
int
depth
()
const
{
return
CV_MAT_DEPTH
(
type_
);
}
...
...
@@ -151,6 +151,8 @@ namespace cv
inline
int
elemSize1
()
const
{
return
CV_ELEM_SIZE1
(
type_
);
}
private
:
int
rows_
;
int
cols_
;
int
type_
;
class
Impl
;
...
...
@@ -183,8 +185,8 @@ namespace cv
void
bind
()
const
;
void
unbind
()
const
;
inline
int
rows
()
const
{
return
vertex_
.
rows
;
}
inline
int
cols
()
const
{
return
vertex_
.
cols
;
}
inline
int
rows
()
const
{
return
vertex_
.
rows
()
;
}
inline
int
cols
()
const
{
return
vertex_
.
cols
()
;
}
inline
Size
size
()
const
{
return
vertex_
.
size
();
}
inline
bool
empty
()
const
{
return
vertex_
.
empty
();
}
...
...
modules/core/src/opengl_interop.cpp
View file @
fa93b724
...
...
@@ -282,7 +282,8 @@ class cv::GlBuffer::Impl
class
cv
::
GlBuffer
::
Impl
{
public
:
Impl
();
static
const
Ptr
<
Impl
>&
empty
();
Impl
(
int
rows
,
int
cols
,
int
type
,
unsigned
int
target
);
Impl
(
const
Mat
&
m
,
unsigned
int
target
);
~
Impl
();
...
...
@@ -305,6 +306,8 @@ public:
#endif
private
:
Impl
();
unsigned
int
buffer_
;
#ifdef HAVE_CUDA
...
...
@@ -312,6 +315,12 @@ private:
#endif
};
inline
const
Ptr
<
cv
::
GlBuffer
::
Impl
>&
cv
::
GlBuffer
::
Impl
::
empty
()
{
static
Ptr
<
Impl
>
p
(
new
Impl
);
return
p
;
}
inline
cv
::
GlBuffer
::
Impl
::
Impl
()
:
buffer_
(
0
)
{
}
...
...
@@ -471,40 +480,40 @@ inline void cv::GlBuffer::Impl::unmapDevice(cudaStream_t stream)
#endif // HAVE_OPENGL
cv
::
GlBuffer
::
GlBuffer
(
Usage
usage
)
:
rows
(
0
),
cols
(
0
),
type_
(
0
),
usage_
(
usage
)
cv
::
GlBuffer
::
GlBuffer
(
Usage
usage
)
:
rows
_
(
0
),
cols_
(
0
),
type_
(
0
),
usage_
(
usage
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
#else
impl_
=
new
Impl
;
impl_
=
Impl
::
empty
()
;
#endif
}
cv
::
GlBuffer
::
GlBuffer
(
int
rows
_
,
int
cols_
,
int
type
,
Usage
usage
)
:
rows
(
0
),
cols
(
0
),
type_
(
0
),
usage_
(
usage
)
cv
::
GlBuffer
::
GlBuffer
(
int
rows
,
int
cols
,
int
type
,
Usage
usage
)
:
rows_
(
0
),
cols_
(
0
),
type_
(
0
),
usage_
(
usage
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
#else
impl_
=
new
Impl
(
rows
_
,
cols_
,
type
,
usage
);
rows
=
rows_
;
cols
=
cols_
;
impl_
=
new
Impl
(
rows
,
cols
,
type
,
usage
);
rows
_
=
rows
;
cols
_
=
cols
;
type_
=
type
;
#endif
}
cv
::
GlBuffer
::
GlBuffer
(
Size
size
,
int
type
,
Usage
usage
)
:
rows
(
0
),
cols
(
0
),
type_
(
0
),
usage_
(
usage
)
cv
::
GlBuffer
::
GlBuffer
(
Size
size
,
int
type
,
Usage
usage
)
:
rows
_
(
0
),
cols_
(
0
),
type_
(
0
),
usage_
(
usage
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
#else
impl_
=
new
Impl
(
size
.
height
,
size
.
width
,
type
,
usage
);
rows
=
size
.
height
;
cols
=
size
.
width
;
rows
_
=
size
.
height
;
cols
_
=
size
.
width
;
type_
=
type
;
#endif
}
cv
::
GlBuffer
::
GlBuffer
(
InputArray
mat_
,
Usage
usage
)
:
rows
(
0
),
cols
(
0
),
type_
(
0
),
usage_
(
usage
)
cv
::
GlBuffer
::
GlBuffer
(
InputArray
mat_
,
Usage
usage
)
:
rows
_
(
0
),
cols_
(
0
),
type_
(
0
),
usage_
(
usage
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
...
...
@@ -529,22 +538,22 @@ cv::GlBuffer::GlBuffer(InputArray mat_, Usage usage) : rows(0), cols(0), type_(0
impl_
=
new
Impl
(
mat
,
usage
);
}
rows
=
size
.
height
;
cols
=
size
.
width
;
rows
_
=
size
.
height
;
cols
_
=
size
.
width
;
type_
=
type
;
#endif
}
void
cv
::
GlBuffer
::
create
(
int
rows
_
,
int
cols_
,
int
type
,
Usage
usage
)
void
cv
::
GlBuffer
::
create
(
int
rows
,
int
cols
,
int
type
,
Usage
usage
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
#else
if
(
rows_
!=
rows
||
cols_
!=
cols
||
type_
!=
type
||
usage_
!=
usage
)
{
impl_
=
new
Impl
(
rows
_
,
cols_
,
type
,
usage
);
rows
=
rows_
;
cols
=
cols_
;
impl_
=
new
Impl
(
rows
,
cols
,
type
,
usage
);
rows
_
=
rows
;
cols
_
=
cols
;
type_
=
type
;
usage_
=
usage
;
}
...
...
@@ -556,7 +565,7 @@ void cv::GlBuffer::release()
#ifndef HAVE_OPENGL
throw_nogl
;
#else
impl_
=
new
Impl
;
impl_
=
Impl
::
empty
()
;
#endif
}
...
...
@@ -623,7 +632,7 @@ Mat cv::GlBuffer::mapHost()
throw_nogl
;
return
Mat
();
#else
return
impl_
->
mapHost
(
rows
,
cols
,
type_
,
usage_
);
return
impl_
->
mapHost
(
rows
_
,
cols_
,
type_
,
usage_
);
#endif
}
...
...
@@ -646,7 +655,7 @@ GpuMat cv::GlBuffer::mapDevice()
throw_nocuda
;
return
GpuMat
();
#else
return
impl_
->
mapDevice
(
rows
,
cols
,
type_
);
return
impl_
->
mapDevice
(
rows
_
,
cols_
,
type_
);
#endif
#endif
}
...
...
@@ -683,7 +692,7 @@ class cv::GlTexture::Impl
class
cv
::
GlTexture
::
Impl
{
public
:
Impl
();
static
const
Ptr
<
Impl
>
empty
();
Impl
(
int
rows
,
int
cols
,
int
type
);
...
...
@@ -699,9 +708,17 @@ public:
void
unbind
()
const
;
private
:
Impl
();
GLuint
tex_
;
};
inline
const
Ptr
<
cv
::
GlTexture
::
Impl
>
cv
::
GlTexture
::
Impl
::
empty
()
{
static
Ptr
<
Impl
>
p
(
new
Impl
);
return
p
;
}
inline
cv
::
GlTexture
::
Impl
::
Impl
()
:
tex_
(
0
)
{
}
...
...
@@ -808,7 +825,7 @@ cv::GlTexture::Impl::Impl(const GlBuffer& buf, bool bgra) : tex_(0)
glPixelStorei
(
GL_UNPACK_ALIGNMENT
,
1
);
CV_CheckGlError
();
glTexImage2D
(
GL_TEXTURE_2D
,
0
,
cn
,
buf
.
cols
,
buf
.
rows
,
0
,
format
,
gl_types
[
depth
],
0
);
glTexImage2D
(
GL_TEXTURE_2D
,
0
,
cn
,
buf
.
cols
(),
buf
.
rows
()
,
0
,
format
,
gl_types
[
depth
],
0
);
CV_CheckGlError
();
buf
.
unbind
();
...
...
@@ -853,7 +870,7 @@ void cv::GlTexture::Impl::copyFrom(const GlBuffer& buf, bool bgra)
int
cn
=
buf
.
channels
();
GLenum
format
=
cn
==
1
?
GL_LUMINANCE
:
(
cn
==
3
?
(
bgra
?
GL_BGR
:
GL_RGB
)
:
(
bgra
?
GL_BGRA
:
GL_RGBA
));
glTexSubImage2D
(
GL_TEXTURE_2D
,
0
,
0
,
0
,
buf
.
cols
,
buf
.
rows
,
format
,
gl_types
[
buf
.
depth
()],
0
);
glTexSubImage2D
(
GL_TEXTURE_2D
,
0
,
0
,
0
,
buf
.
cols
(),
buf
.
rows
()
,
format
,
gl_types
[
buf
.
depth
()],
0
);
CV_CheckGlError
();
buf
.
unbind
();
...
...
@@ -881,40 +898,40 @@ inline void cv::GlTexture::Impl::unbind() const
#endif // HAVE_OPENGL
cv
::
GlTexture
::
GlTexture
()
:
rows
(
0
),
cols
(
0
),
type_
(
0
)
cv
::
GlTexture
::
GlTexture
()
:
rows
_
(
0
),
cols_
(
0
),
type_
(
0
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
#else
impl_
=
new
Impl
;
impl_
=
Impl
::
empty
()
;
#endif
}
cv
::
GlTexture
::
GlTexture
(
int
rows
_
,
int
cols_
,
int
type
)
:
rows
(
0
),
cols
(
0
),
type_
(
0
)
cv
::
GlTexture
::
GlTexture
(
int
rows
,
int
cols
,
int
type
)
:
rows_
(
0
),
cols_
(
0
),
type_
(
0
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
#else
impl_
=
new
Impl
(
rows
_
,
cols_
,
type
);
rows
=
rows_
;
cols
=
cols_
;
impl_
=
new
Impl
(
rows
,
cols
,
type
);
rows
_
=
rows
;
cols
_
=
cols
;
type_
=
type
;
#endif
}
cv
::
GlTexture
::
GlTexture
(
Size
size
,
int
type
)
:
rows
(
0
),
cols
(
0
),
type_
(
0
)
cv
::
GlTexture
::
GlTexture
(
Size
size
,
int
type
)
:
rows
_
(
0
),
cols_
(
0
),
type_
(
0
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
#else
impl_
=
new
Impl
(
size
.
height
,
size
.
width
,
type
);
rows
=
size
.
height
;
cols
=
size
.
width
;
rows
_
=
size
.
height
;
cols
_
=
size
.
width
;
type_
=
type
;
#endif
}
cv
::
GlTexture
::
GlTexture
(
InputArray
mat_
,
bool
bgra
)
:
rows
(
0
),
cols
(
0
),
type_
(
0
)
cv
::
GlTexture
::
GlTexture
(
InputArray
mat_
,
bool
bgra
)
:
rows
_
(
0
),
cols_
(
0
),
type_
(
0
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
...
...
@@ -951,22 +968,22 @@ cv::GlTexture::GlTexture(InputArray mat_, bool bgra) : rows(0), cols(0), type_(0
}
}
rows
=
size
.
height
;
cols
=
size
.
width
;
rows
_
=
size
.
height
;
cols
_
=
size
.
width
;
type_
=
type
;
#endif
}
void
cv
::
GlTexture
::
create
(
int
rows
_
,
int
cols_
,
int
type
)
void
cv
::
GlTexture
::
create
(
int
rows
,
int
cols
,
int
type
)
{
#ifndef HAVE_OPENGL
throw_nogl
;
#else
if
(
rows_
!=
rows
||
cols_
!=
cols
||
type_
!=
type
)
{
impl_
=
new
Impl
(
rows
_
,
cols_
,
type
);
rows
=
rows_
;
cols
=
cols_
;
impl_
=
new
Impl
(
rows
,
cols
,
type
);
rows
_
=
rows
;
cols
_
=
cols
;
type_
=
type
;
}
#endif
...
...
@@ -977,7 +994,7 @@ void cv::GlTexture::release()
#ifndef HAVE_OPENGL
throw_nogl
;
#else
impl_
=
new
Impl
;
impl_
=
Impl
::
empty
()
;
#endif
}
...
...
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