马个鸡,总算编译过了自定义Shader,在此感谢自己,感谢自己,以及感谢自己。没有自己的努力,我是不可能解决这个问题的,自己真是太叼了。妈的智障!!!

管方那屎一样的make工具根本没用,反正我是折腾半天死活用不了,以及google都搜不到半点教程和相关解决方案让我差点放弃。

今早起来咽不下这口气,找出编译过的LumixEngine参考了一下,主要的问题就是不知道这个shaderc到底是怎么用的,缺少一个靠谱的参考。

根据这里提到,编译有include不到某某文件的问题,要包含bgfx_shader.sh,也就是要把bgfx/src目录加入到参数中

https://github.com/bkaradzic/bgfx/issues/1148

我目前用的成功的参数,例子测试的是bgfx\examples\01-cubes目录,图如下,建立dx11和glsl目录

ogl.bat

shaderc -f vs_cubes.sc -o .\glsl\vs_cubes.bin --depends -i ..\..\src --varyingdef varying.def.sc --platform linux -p 120 --type vertex -O3
shaderc -f fs_cubes.sc -o .\glsl\fs_cubes.bin --depends -i ..\..\src --varyingdef varying.def.sc --platform linux -p 120 --type fragment -O3

编译shaderc项目,会生成到

bgfx\.build\win32_vs2015\bin\shadercRelease.exe

改名为shaderc.exe,或其他你自己喜欢的,我用的shaderc,放到这个01-cubes项目下。

拉个命令提示符快捷方式过来,点击就在本目录打开。然后运行ogl.bat就行了。

参数上参考的

bgfx\scripts\shader.mk

这个文件写的

分别是

-f glsl脚本文本

-o 输出文件名

-i 包含bgfx_shader.sh的路径

--varyingdef varying.def.sc文件

--platform shader参数,这个平台不管你是win下还是linux还是什么,只要是glsl shader,就写linux,这玩意并不区分window glsl shader还是linux glsl shader,这是参考shader.mk写的

格式分3种,VS,FS,CS,对应顶点,像素,计算着色器,前缀vs,fs,cs似乎是必需的,没验证,但是昨晚搜的时候好像哪提到过。

于是运行就能编译glsl的shader了。

dx11.bat

shaderc -f vs_cubes.sc -o .\dx11\vs_cubes.bin --depends -i ..\..\src --varyingdef varying.def.sc --platform windows -p vs_4_0 -O 3 --type vertex -O3
shaderc -f fs_cubes.sc -o .\dx11\fs_cubes.bin --depends -i ..\..\src --varyingdef varying.def.sc --platform windows -p ps_4_0 -O 3 --type fragment -O3

这是我用的dx11编译项

然后我们来试着修改一下fs shader内容

$input v_color0

/*
 * Copyright 2011-2018 Branimir Karadzic. All rights reserved.
 * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
 */

#include "../common/common.sh"

void main()
{
	// gl_FragColor = v_color0;
	gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}

把颜色改为纯红色

编译出来的bin替换

bgfx\examples\runtime\shaders\glsl

目录下对应的bin,替换前可以备份一下原文件

看到鲜红的颜色,知道终于成功了

换到DX11模式再测试一下

$input v_color0

/*
 * Copyright 2011-2018 Branimir Karadzic. All rights reserved.
 * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
 */

#include "../common/common.sh"

void main()
{
	// gl_FragColor = v_color0;
	gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);
}

大功告成,坑弃回归Urho3D

最新文章

  1. centos apache svn配置
  2. c#-基础:类的进阶
  3. linux 命令 第一波
  4. Qt信号和槽的个人总结
  5. Linux中yum的安装
  6. Jenkins的安装与系统配置
  7. Handler线程间通信
  8. HTTPS和HTTP的区别是什么?
  9. innerHTML,outerHTML,innerText,outerText
  10. link & auto cards
  11. WSDL 文档-一个简单的 XML 文档
  12. encrypt and decrypt data
  13. 008-spring cloud gateway-路由谓词RoutePredicate、RoutePredicateFactory
  14. [转] Hadoop MapReduce开发最佳实践(上篇)
  15. vue打包空白,图片没加载,背景颜色没有渲染出来-配置秘诀
  16. 规则引擎以及blaze 规则库的集成初探之二——JSR94 的规则引擎API和实现
  17. 算法提高 P1001【大数乘法】
  18. 【Leetcode】【Medium】Divide Two Integers
  19. 在 C Level 用 dlopen 使用 第三方的 Shared Library (.so)
  20. Python3.x:判断字符串是否为全数字、英文、大写、小写、空白字符

热门文章

  1. spark内存分配
  2. 使用MagickNet编辑图片
  3. 解题(Solution -4Sum)
  4. TestNG实现用例运行失败自动截图(转载)
  5. d3.js svg中 g 标签问题一览
  6. java、asp.net 通用分页码函数
  7. SpringCloud Hystrix熔断之线程池
  8. Android Studio 集成开发工具教学视频
  9. scrapy 的log功能
  10. 记录-springcloud -mybatis(代码)