Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CGoGN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
KennethVanhoey
CGoGN
Commits
a86afa8e
Commit
a86afa8e
authored
Dec 12, 2013
by
Sylvain Thery
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update GLSL interface & some Geom functions
parent
63197e65
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
164 additions
and
55 deletions
+164
-55
include/Geometry/distances.h
include/Geometry/distances.h
+13
-0
include/Geometry/intersection.h
include/Geometry/intersection.h
+18
-0
include/Geometry/intersection.hpp
include/Geometry/intersection.hpp
+78
-5
include/Utils/GLSLShader.h
include/Utils/GLSLShader.h
+2
-2
include/Utils/gl_def.h
include/Utils/gl_def.h
+1
-1
src/Utils/GLSLShader.cpp
src/Utils/GLSLShader.cpp
+50
-45
src/Utils/Qt/qtQGLV.cpp
src/Utils/Qt/qtQGLV.cpp
+2
-2
No files found.
include/Geometry/distances.h
View file @
a86afa8e
...
...
@@ -89,6 +89,11 @@ typename VEC3::DATA_TYPE squaredDistanceLine2Point(const VEC3& A, const VEC3& B,
/**
* compute squared distance from line to line
* @param A point of first line
* @param AB vector of first line
* @param AB2 AB*AB (for optimization if call several times with AB
* @param P first point of second line
* @param Q second point of second line
* @return the squared distance
*/
template
<
typename
VEC3
>
...
...
@@ -96,6 +101,11 @@ typename VEC3::DATA_TYPE squaredDistanceLine2Line(const VEC3& A, const VEC3& AB,
/**
* compute squared distance from line to segment
* @param A point of line
* @param AB vector of line
* @param AB2 AB*AB (for optimization if call several times with AB
* @param P first point of segment
* @param Q second point of segment
* @return the squared distance
*/
template
<
typename
VEC3
>
...
...
@@ -103,6 +113,9 @@ typename VEC3::DATA_TYPE squaredDistanceLine2Seg(const VEC3& A, const VEC3& AB,
/**
* compute squared distance from segment to point
* @param A point of segment
* @param AB vector of segment
* @param AB2 AB*AB (for optimization if call several times with AB
* @return the squared distance
*/
template
<
typename
VEC3
>
...
...
include/Geometry/intersection.h
View file @
a86afa8e
...
...
@@ -166,6 +166,10 @@ Intersection intersection2DSegmentSegment(const VEC3& PA, const VEC3& PB, const
template
<
typename
VEC3
>
Intersection
intersectionSegmentPlan
(
const
VEC3
&
PA
,
const
VEC3
&
PB
,
const
VEC3
&
PlaneP
,
const
VEC3
&
NormP
);
//, VEC3& Inter) ;
template
<
typename
VEC3
>
Intersection
intersectionSegmentPlan
(
const
VEC3
&
PA
,
const
VEC3
&
PB
,
const
VEC3
&
PlaneP
,
const
VEC3
&
NormP
,
VEC3
&
Inter
)
;
template
<
typename
VEC3
>
Intersection
intersectionTrianglePlan
(
const
VEC3
&
Ta
,
const
VEC3
&
Tb
,
const
VEC3
&
Tc
,
const
VEC3
&
PlaneP
,
const
VEC3
&
NormP
);
//, VEC3& Inter) ;
...
...
@@ -177,6 +181,20 @@ template <typename VEC3>
Intersection
intersectionTriangleHalfPlan
(
const
VEC3
&
Ta
,
const
VEC3
&
Tb
,
const
VEC3
&
Tc
,
const
VEC3
&
P
,
const
VEC3
&
DirP
,
const
VEC3
&
OrientP
);
//, VEC3& Inter) ;
/**
* compute intersection between line and segment
* @param A point of line
* @param AB vector of line
* @param AB2 AB*AB (for optimization if call several times with AB
* @param P first point of segment
* @param Q second point of segment
* @param inter the computed intersection
* @return intersection of not
*/
template
<
typename
VEC3
>
bool
interLineSeg
(
const
VEC3
&
A
,
const
VEC3
&
AB
,
typename
VEC3
::
DATA_TYPE
AB2
,
const
VEC3
&
P
,
const
VEC3
&
Q
,
VEC3
&
inter
);
}
// namespace Geom
}
// namespace CGoGN
...
...
include/Geometry/intersection.hpp
View file @
a86afa8e
...
...
@@ -22,6 +22,8 @@
* *
*******************************************************************************/
#include "Geometry/distances.h"
namespace
CGoGN
{
...
...
@@ -487,19 +489,61 @@ Intersection intersection2DSegmentSegment(const VEC3& PA, const VEC3& PB, const
template
<
typename
VEC3
>
Intersection
intersectionSegmentPlan
(
const
VEC3
&
PA
,
const
VEC3
&
PB
,
const
VEC3
&
PlaneP
,
const
VEC3
&
NormP
)
//, VEC3& Inter)
{
typename
VEC3
::
DATA_TYPE
panp
=
NormP
*
PA
;
typename
VEC3
::
DATA_TYPE
pbnp
=
NormP
*
PB
;
// typename VEC3::DATA_TYPE panp = NormP * PA;
// typename VEC3::DATA_TYPE pbnp = NormP * PB;
// if(panp == 0 || pbnp == 0)
// return VERTEX_INTERSECTION;
// else if((panp < 0 && pbnp > 0) || (panp > 0 && pbnp < 0))
// return EDGE_INTERSECTION;
// else
// return NO_INTERSECTION;
#define EPSILON 1e-12
if
(
panp
==
0
||
pbnp
==
0
)
typename
VEC3
::
DATA_TYPE
panp
=
NormP
*
(
PA
-
PlaneP
);
typename
VEC3
::
DATA_TYPE
pbnp
=
NormP
*
(
PB
-
PlaneP
);
if
(
abs
(
panp
)
<
EPSILON
||
abs
(
pbnp
)
<
EPSILON
)
return
VERTEX_INTERSECTION
;
else
if
((
panp
<
0
&&
pbnp
>
0
)
||
(
panp
>
0
&&
pbnp
<
0
))
return
EDGE_INTERSECTION
;
// else if((panp < 0 && pbnp > 0) || (panp > 0 && pbnp < 0))
else
if
(
panp
*
pbnp
<
0
)
return
EDGE_INTERSECTION
;
else
return
NO_INTERSECTION
;
#undef EPSILON
}
template
<
typename
VEC3
>
Intersection
intersectionSegmentPlan
(
const
VEC3
&
PA
,
const
VEC3
&
PB
,
const
VEC3
&
PlaneP
,
const
VEC3
&
NormP
,
VEC3
&
Inter
)
{
#define EPSILON 1e-12
typename
VEC3
::
DATA_TYPE
panp
=
NormP
*
(
PA
-
PlaneP
);
typename
VEC3
::
DATA_TYPE
pbnp
=
NormP
*
(
PB
-
PlaneP
);
if
(
abs
(
panp
)
<
EPSILON
)
{
Inter
=
PA
;
return
VERTEX_INTERSECTION
;
}
else
if
(
abs
(
pbnp
)
<
EPSILON
)
{
Inter
=
PB
;
return
VERTEX_INTERSECTION
;
}
else
if
(
panp
*
pbnp
<
0
)
{
Inter
=
(
abs
(
panp
)
*
PB
+
abs
(
pbnp
)
*
PA
)
/
(
abs
(
panp
)
+
abs
(
pbnp
))
;
return
EDGE_INTERSECTION
;
}
else
return
NO_INTERSECTION
;
#undef EPSILON
}
template
<
typename
VEC3
>
Intersection
intersectionTrianglePlan
(
const
VEC3
&
Ta
,
const
VEC3
&
Tb
,
const
VEC3
&
Tc
,
const
VEC3
&
PlaneP
,
const
VEC3
&
NormP
)
//, VEC3& Inter) ;
{
...
...
@@ -566,6 +610,35 @@ Intersection intersectionTriangleHalfPlan(const VEC3& Ta, const VEC3& Tb, const
}
}
template
<
typename
VEC3
>
bool
interLineSeg
(
const
VEC3
&
A
,
const
VEC3
&
AB
,
typename
VEC3
::
DATA_TYPE
AB2
,
const
VEC3
&
P
,
const
VEC3
&
Q
,
VEC3
&
inter
)
{
#define EPSILON (1.0e-5)
typedef
typename
VEC3
::
DATA_TYPE
T
;
T
dist
=
Geom
::
distancePoint2TrianglePlane
(
AB
-
A
,
A
,
P
,
Q
);
// std::cout << "dist "<< dist << std::endl;
if
(
dist
>
EPSILON
)
return
false
;
VEC3
AP
=
P
-
A
;
VEC3
PQ
=
Q
-
P
;
T
X
=
AB
*
PQ
;
T
beta
=
(
AB2
*
(
AP
*
PQ
)
-
X
*
(
AP
*
AB
)
)
/
(
X
*
X
-
AB2
*
PQ
.
norm2
()
)
;
// std::cout << "beta "<< beta << std::endl;
if
((
beta
<
0.0
)
||
(
beta
>
1.0
))
return
false
;
inter
=
beta
*
Q
+
(
1.0
-
beta
)
*
P
;
return
true
;
#undef EPSILON
}
}
}
include/Utils/GLSLShader.h
View file @
a86afa8e
...
...
@@ -178,7 +178,7 @@ protected:
* @param obj what log do you want ?
* @return the log
*/
char
*
getInfoLog
(
GL
handleARB
obj
);
char
*
getInfoLog
(
GL
uint
obj
);
public:
/**
...
...
@@ -304,7 +304,7 @@ public:
/**
* get handler of program for external use og gl functions
*/
GL
handleARB
program_handler
()
{
return
*
m_program_object
;}
GL
uint
program_handler
()
{
return
*
m_program_object
;}
/**
* check shader validity width official GLSL syntax
...
...
include/Utils/gl_def.h
View file @
a86afa8e
...
...
@@ -61,7 +61,7 @@ public:
typedef
FalsePtr
<
GLint
>
CGoGNGLint
;
typedef
FalsePtr
<
GLuint
>
CGoGNGLuint
;
typedef
FalsePtr
<
GL
handleARB
>
CGoGNGLhandleARB
;
typedef
FalsePtr
<
GL
uint
>
CGoGNGLhandleARB
;
typedef
FalsePtr
<
GLenum
>
CGoGNGLenum
;
typedef
FalsePtr
<
GLenum
*>
CGoGNGLenumTable
;
...
...
src/Utils/GLSLShader.cpp
View file @
a86afa8e
...
...
@@ -298,18 +298,18 @@ bool GLSLShader::loadVertexShaderSourceString( const char *vertex_shader_source
{
CGoGNerr
<<
"ERROR - GLSLShader::loadVertexShader() - source string is empty."
<<
CGoGNendl
;
glDelete
ObjectARB
(
*
m_vertex_shader_object
);
glDelete
Shader
(
*
m_vertex_shader_object
);
*
m_vertex_shader_object
=
0
;
return
false
;
}
glShaderSource
ARB
(
*
m_vertex_shader_object
,
1
,
(
const
char
**
)
&
vertex_shader_source
,
NULL
);
glShaderSource
(
*
m_vertex_shader_object
,
1
,
(
const
char
**
)
&
vertex_shader_source
,
NULL
);
/*** compile shader object ***/
glCompileShader
ARB
(
*
m_vertex_shader_object
);
glCompileShader
(
*
m_vertex_shader_object
);
glGet
ObjectParameterivARB
(
*
m_vertex_shader_object
,
GL_OBJECT_COMPILE_STATUS_ARB
,
&
status
);
glGet
Programiv
(
*
m_vertex_shader_object
,
GL_OBJECT_COMPILE_STATUS_ARB
,
&
status
);
if
(
!
status
)
{
CGoGNerr
<<
"ERROR - GLshader::loadVertexShader() - error occured while compiling shader "
<<
m_nameVS
<<
CGoGNendl
;
...
...
@@ -317,7 +317,7 @@ bool GLSLShader::loadVertexShaderSourceString( const char *vertex_shader_source
CGoGNerr
<<
info_log
<<
CGoGNendl
;
delete
[]
info_log
;
glDelete
ObjectARB
(
*
m_vertex_shader_object
);
glDelete
Shader
(
*
m_vertex_shader_object
);
*
m_vertex_shader_object
=
0
;
return
false
;
...
...
@@ -352,18 +352,18 @@ bool GLSLShader::loadFragmentShaderSourceString( const char *fragment_shader_sou
{
CGoGNerr
<<
"ERROR - GLSLShader::loadFragmentShader() - source string is empty."
<<
CGoGNendl
;
glDelete
ObjectARB
(
*
m_fragment_shader_object
);
glDelete
Shader
(
*
m_fragment_shader_object
);
*
m_fragment_shader_object
=
0
;
return
false
;
}
glShaderSource
ARB
(
*
m_fragment_shader_object
,
1
,
(
const
char
**
)
&
fragment_shader_source
,
NULL
);
glShaderSource
(
*
m_fragment_shader_object
,
1
,
(
const
char
**
)
&
fragment_shader_source
,
NULL
);
/*** compile shader object ***/
glCompileShader
ARB
(
*
m_fragment_shader_object
);
glCompileShader
(
*
m_fragment_shader_object
);
glGet
ObjectParameterivARB
(
*
m_fragment_shader_object
,
GL_OBJECT_COMPILE_STATUS_ARB
,
&
status
);
glGet
Programiv
(
*
m_fragment_shader_object
,
GL_OBJECT_COMPILE_STATUS_ARB
,
&
status
);
if
(
!
status
)
{
CGoGNerr
<<
"ERROR - GLshader::loadFragmentShader() - error occured while compiling shader "
<<
m_nameFS
<<
CGoGNendl
;
...
...
@@ -371,7 +371,7 @@ bool GLSLShader::loadFragmentShaderSourceString( const char *fragment_shader_sou
CGoGNerr
<<
info_log
<<
CGoGNendl
;
delete
[]
info_log
;
glDelete
ObjectARB
(
*
m_fragment_shader_object
);
glDelete
Shader
(
*
m_fragment_shader_object
);
*
m_fragment_shader_object
=
0
;
return
false
;
...
...
@@ -405,18 +405,18 @@ bool GLSLShader::loadGeometryShaderSourceString( const char *geom_shader_source
{
CGoGNerr
<<
"ERROR - GLSLShader::loadGeometryShader() - source string is empty."
<<
CGoGNendl
;
glDelete
ObjectARB
(
*
m_geom_shader_object
);
glDelete
Shader
(
*
m_geom_shader_object
);
*
m_geom_shader_object
=
0
;
return
false
;
}
glShaderSource
ARB
(
*
m_geom_shader_object
,
1
,
(
const
char
**
)
&
geom_shader_source
,
NULL
);
glShaderSource
(
*
m_geom_shader_object
,
1
,
(
const
char
**
)
&
geom_shader_source
,
NULL
);
/*** compile shader object ***/
glCompileShader
ARB
(
*
m_geom_shader_object
);
glCompileShader
(
*
m_geom_shader_object
);
glGet
ObjectParameterivARB
(
*
m_geom_shader_object
,
GL_OBJECT_COMPILE_STATUS_ARB
,
&
status
);
glGet
Programiv
(
*
m_geom_shader_object
,
GL_OBJECT_COMPILE_STATUS_ARB
,
&
status
);
if
(
!
status
)
{
CGoGNerr
<<
"ERROR - GLshader::loadGeometryShader() - error occured while compiling shader "
<<
m_nameGS
<<
CGoGNendl
;
...
...
@@ -424,7 +424,7 @@ bool GLSLShader::loadGeometryShaderSourceString( const char *geom_shader_source
CGoGNerr
<<
info_log
<<
CGoGNendl
;
delete
[]
info_log
;
glDelete
ObjectARB
(
*
m_geom_shader_object
);
glDelete
Shader
(
*
m_geom_shader_object
);
*
m_geom_shader_object
=
0
;
return
false
;
...
...
@@ -434,16 +434,16 @@ bool GLSLShader::loadGeometryShaderSourceString( const char *geom_shader_source
return
true
;
}
char
*
GLSLShader
::
getInfoLog
(
GL
handleARB
obj
)
char
*
GLSLShader
::
getInfoLog
(
GL
uint
obj
)
{
char
*
info_log
;
int
info_log_length
;
int
length
;
glGet
ObjectParameterivARB
(
obj
,
GL_OBJECT_INFO_LOG_LENGTH_ARB
,
&
info_log_length
);
glGet
Programiv
(
obj
,
GL_OBJECT_INFO_LOG_LENGTH_ARB
,
&
info_log_length
);
info_log
=
new
char
[
info_log_length
];
glGet
InfoLogARB
(
obj
,
info_log_length
,
&
length
,
info_log
);
glGet
ProgramInfoLog
(
obj
,
info_log_length
,
&
length
,
info_log
);
return
info_log
;
}
...
...
@@ -467,7 +467,7 @@ bool GLSLShader::create(GLint inputGeometryPrimitive,GLint outputGeometryPrimiti
}
/*** create program object ***/
m_program_object
=
glCreateProgram
ObjectARB
();
m_program_object
=
glCreateProgram
();
if
(
!*
m_program_object
)
{
...
...
@@ -476,11 +476,11 @@ bool GLSLShader::create(GLint inputGeometryPrimitive,GLint outputGeometryPrimiti
}
/*** attach shaders to program object ***/
glAttach
ObjectARB
(
*
m_program_object
,
*
m_vertex_shader_object
);
glAttach
ObjectARB
(
*
m_program_object
,
*
m_fragment_shader_object
);
glAttach
Shader
(
*
m_program_object
,
*
m_vertex_shader_object
);
glAttach
Shader
(
*
m_program_object
,
*
m_fragment_shader_object
);
if
(
*
m_geom_shader_object
)
{
glAttach
ObjectARB
(
*
m_program_object
,
*
m_geom_shader_object
);
glAttach
Shader
(
*
m_program_object
,
*
m_geom_shader_object
);
glProgramParameteriEXT
(
*
m_program_object
,
GL_GEOMETRY_INPUT_TYPE_EXT
,
inputGeometryPrimitive
);
glProgramParameteriEXT
(
*
m_program_object
,
GL_GEOMETRY_OUTPUT_TYPE_EXT
,
outputGeometryPrimitive
);
...
...
@@ -488,9 +488,9 @@ bool GLSLShader::create(GLint inputGeometryPrimitive,GLint outputGeometryPrimiti
}
/*** link program object ***/
glLinkProgram
ARB
(
*
m_program_object
);
glLinkProgram
(
*
m_program_object
);
glGet
ObjectParameterivARB
(
*
m_program_object
,
GL_OBJECT_LINK_STATUS_ARB
,
&
status
);
glGet
Programiv
(
*
m_program_object
,
GL_OBJECT_LINK_STATUS_ARB
,
&
status
);
if
(
!
status
)
{
CGoGNerr
<<
"ERROR - GLSLShader::create() - error occured while linking shader program."
<<
CGoGNendl
;
...
...
@@ -498,11 +498,11 @@ bool GLSLShader::create(GLint inputGeometryPrimitive,GLint outputGeometryPrimiti
CGoGNerr
<<
" LINK "
<<
info_log
<<
CGoGNendl
;
delete
[]
info_log
;
glDetach
ObjectARB
(
*
m_program_object
,
*
m_vertex_shader_object
);
glDetach
ObjectARB
(
*
m_program_object
,
*
m_fragment_shader_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_vertex_shader_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_fragment_shader_object
);
if
(
*
m_geom_shader_object
)
glDetach
ObjectARB
(
*
m_program_object
,
*
m_geom_shader_object
);
glDelete
ObjectARB
(
*
m_program_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_geom_shader_object
);
glDelete
Shader
(
*
m_program_object
);
*
m_program_object
=
0
;
return
false
;
...
...
@@ -542,9 +542,9 @@ bool GLSLShader::link()
char
*
info_log
;
/*** link program object ***/
glLinkProgram
ARB
(
*
m_program_object
);
glLinkProgram
(
*
m_program_object
);
glGet
ObjectParameterivARB
(
*
m_program_object
,
GL_OBJECT_LINK_STATUS_ARB
,
&
status
);
glGet
Programiv
(
*
m_program_object
,
GL_OBJECT_LINK_STATUS_ARB
,
&
status
);
if
(
!
status
)
{
CGoGNerr
<<
"ERROR - GLSLShader::create() - error occured while linking shader program."
<<
CGoGNendl
;
...
...
@@ -552,11 +552,11 @@ bool GLSLShader::link()
CGoGNerr
<<
" LINK "
<<
info_log
<<
CGoGNendl
;
delete
[]
info_log
;
glDetach
ObjectARB
(
*
m_program_object
,
*
m_vertex_shader_object
);
glDetach
ObjectARB
(
*
m_program_object
,
*
m_fragment_shader_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_vertex_shader_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_fragment_shader_object
);
if
(
*
m_geom_shader_object
)
glDetach
ObjectARB
(
*
m_program_object
,
*
m_geom_shader_object
);
glDelete
ObjectARB
(
*
m_program_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_geom_shader_object
);
glDelete
Shader
(
*
m_program_object
);
*
m_program_object
=
0
;
return
false
;
...
...
@@ -569,7 +569,7 @@ bool GLSLShader::bind() const
{
if
(
*
m_program_object
)
{
glUseProgram
ObjectARB
(
*
m_program_object
);
glUseProgram
(
*
m_program_object
);
return
true
;
}
else
...
...
@@ -580,13 +580,18 @@ void GLSLShader::unbind() const
{
if
(
*
m_program_object
)
{
glUseProgram
ObjectARB
(
0
);
glUseProgram
(
0
);
}
}
bool
GLSLShader
::
isBinded
()
{
return
(
*
m_program_object
&&
*
m_program_object
==
glGetHandleARB
(
GL_PROGRAM_OBJECT_ARB
)
);
if
(
*
m_program_object
==
0
)
return
false
;
GLint
po
;
glGetIntegerv
(
GL_CURRENT_PROGRAM
,
&
po
);
return
(
*
m_program_object
==
po
);
}
GLSLShader
::~
GLSLShader
()
...
...
@@ -597,21 +602,21 @@ GLSLShader::~GLSLShader()
if
(
*
m_vertex_shader_object
)
{
glDetach
ObjectARB
(
*
m_program_object
,
*
m_vertex_shader_object
);
glDelete
ObjectARB
(
*
m_vertex_shader_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_vertex_shader_object
);
glDelete
Shader
(
*
m_vertex_shader_object
);
}
if
(
*
m_fragment_shader_object
)
{
glDetach
ObjectARB
(
*
m_program_object
,
*
m_fragment_shader_object
);
glDelete
ObjectARB
(
*
m_fragment_shader_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_fragment_shader_object
);
glDelete
Shader
(
*
m_fragment_shader_object
);
}
if
(
*
m_geom_shader_object
)
{
glDetach
ObjectARB
(
*
m_program_object
,
*
m_geom_shader_object
);
glDelete
ObjectARB
(
*
m_geom_shader_object
);
glDetach
Shader
(
*
m_program_object
,
*
m_geom_shader_object
);
glDelete
Shader
(
*
m_geom_shader_object
);
}
glDelete
ObjectARB
(
*
m_program_object
);
glDelete
Shader
(
*
m_program_object
);
}
if
(
m_vertex_shader_source
!=
NULL
)
...
...
@@ -915,7 +920,7 @@ bool GLSLShader::checkShader(int shaderType)
{
GLint
Result
=
GL_FALSE
;
int
InfoLogLength
;
GL
handleARB
id
;
GL
uint
id
;
switch
(
shaderType
)
{
...
...
src/Utils/Qt/qtQGLV.cpp
View file @
a86afa8e
...
...
@@ -305,13 +305,13 @@ void SimpleQGLV::keyPressEvent(QKeyEvent *e)
else
QWidget
::
keyPressEvent
(
e
);
m_qglWidget
->
keyPressEvent
(
e
);
// ?
//
m_qglWidget->keyPressEvent(e); // ?
}
void
SimpleQGLV
::
keyReleaseEvent
(
QKeyEvent
*
e
)
{
QWidget
::
keyReleaseEvent
(
e
);
m_qglWidget
->
keyReleaseEvent
(
e
);
//
m_qglWidget->keyReleaseEvent(e);
}
void
SimpleQGLV
::
glMousePosition
(
int
&
x
,
int
&
y
)
...
...
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