Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
27a78730
O
obs-studio
项目概览
尘离序散
/
obs-studio
与 Fork 源项目一致
从无法访问的项目Fork
通知
30
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
obs-studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
27a78730
编写于
10月 12, 2013
作者:
J
jp9000
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix the can_render function and add in view/projection matrix code
上级
9577ddcf
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
5 deletion
+25
-5
libobs-opengl/gl-subsystem.c
libobs-opengl/gl-subsystem.c
+25
-5
未找到文件。
libobs-opengl/gl-subsystem.c
浏览文件 @
27a78730
...
...
@@ -15,6 +15,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
#include "graphics/matrix3.h"
#include "gl-subsystem.h"
static
void
clear_textures
(
struct
gs_device
*
device
)
...
...
@@ -58,7 +59,9 @@ device_t device_create(struct gs_init_data *info)
goto
fail
;
#ifdef _DEBUG
gl_enable
(
GL_DEBUG_OUTPUT
);
glEnable
(
GL_DEBUG_OUTPUT
);
if
(
glGetError
()
==
GL_INVALID_ENUM
)
blog
(
LOG_DEBUG
,
"OpenGL debug information not available"
);
#endif
return
device
;
...
...
@@ -607,13 +610,13 @@ void device_beginscene(device_t device)
static
inline
bool
can_render
(
device_t
device
)
{
if
(
!
device
->
cur_vertex_
buff
er
)
{
blog
(
LOG_ERROR
,
"No vertex
buff
er specified"
);
if
(
!
device
->
cur_vertex_
shad
er
)
{
blog
(
LOG_ERROR
,
"No vertex
shad
er specified"
);
return
false
;
}
if
(
!
device
->
cur_
vertex_buff
er
)
{
blog
(
LOG_ERROR
,
"No
vertex buff
er specified"
);
if
(
!
device
->
cur_
pixel_shad
er
)
{
blog
(
LOG_ERROR
,
"No
pixel shad
er specified"
);
return
false
;
}
...
...
@@ -625,6 +628,21 @@ static inline bool can_render(device_t device)
return
true
;
}
static
void
update_viewproj_matrix
(
struct
gs_device
*
device
)
{
struct
gs_shader
*
vs
=
device
->
cur_vertex_shader
;
struct
matrix3
cur_matrix
;
gs_matrix_get
(
&
cur_matrix
);
matrix4_from_matrix3
(
&
device
->
cur_view
,
&
cur_matrix
);
matrix4_mul
(
&
device
->
cur_viewproj
,
&
device
->
cur_view
,
&
device
->
cur_proj
);
matrix4_transpose
(
&
device
->
cur_viewproj
,
&
device
->
cur_viewproj
);
if
(
vs
->
viewproj
)
shader_setmatrix4
(
vs
,
vs
->
viewproj
,
&
device
->
cur_viewproj
);
}
void
device_draw
(
device_t
device
,
enum
gs_draw_mode
draw_mode
,
uint32_t
start_vert
,
uint32_t
num_verts
)
{
...
...
@@ -634,6 +652,8 @@ void device_draw(device_t device, enum gs_draw_mode draw_mode,
if
(
!
can_render
(
device
))
goto
fail
;
update_viewproj_matrix
(
device
);
if
(
ib
)
{
glDrawElements
(
topology
,
num_verts
,
ib
->
gl_type
,
(
const
GLvoid
*
)(
start_vert
*
ib
->
width
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录