请问如何编译shader程序

序员 2010-01-24 06:59:35
现在使用的是OpenGL superbible,
但是书中没有具体说明用什么IDE 或者compiler,
怎样把源代码,.vs .fs 文件变成.exe。。。。。
请问你们是怎么编译运行shader程序?
...全文
313 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
张赐 2010-01-25
  • 打赏
  • 举报
回复
看来楼主还是没有懂啊

shader和opengl中间需要有代码来连接,并不是有shader文件添加到ide里就可以直接用的。

我给的代码就是链接opengl和shader的代码
xingzhe2001 2010-01-25
  • 打赏
  • 举报
回复
是exe在运行的时候读取shader文件然后调用api动态编译的。
luoya263547560 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cuiy0001 的回复:]
是不是.cpp文件正常编译,生成的.exe 要能读取到shader文件?
[/Quote]
DX中是exe运行的时候主动的去编译加载shader文件,OpenGL没有用过,但是感觉应该也差不到哪去。
序员 2010-01-25
  • 打赏
  • 举报
回复
是不是.cpp文件正常编译,生成的.exe 要能读取到shader文件?
序员 2010-01-25
  • 打赏
  • 举报
回复
谢谢zhangci,不过我的问题好像是这样的:
比如一个人原来不知道编程
现在应该有人告诉他:
你有一个Hello.c 文件,到网上下载一个
IDE比如DevC++。双击运行安装程序,一直按下
一步。完毕,打开程序,点击文件,新建一个console
工程,右击工程图标,添加文件,浏览到hello.c
点击工具,点击编译,完成,点击运行。OK了。。


我现在应该 有.cpp,.vs,.fs 三个文件,
如何得到.exe呢?(P.S. 我会使用glee编译
普通openGL工程。
张赐 2010-01-24
  • 打赏
  • 举报
回复
vs,fs当然不能编译成exe文件,它只是shader文件。
要编译shader,确认你的openGL版本为2.0以上,并且显卡支持openGL2.0以上版本
然后,使用glew扩展,利用glew提供的api即可。

比如


void setShaders() {

char *vs = NULL,*fs = NULL,*fs2 = NULL;

v = glCreateShader(GL_VERTEX_SHADER);
f = glCreateShader(GL_FRAGMENT_SHADER);

vs = textFileRead("toonf2.vert");
fs = textFileRead("toonf2.frag");

const char * vv = vs;
const char * ff = fs;

glShaderSource(v, 1, &vv,NULL);
glShaderSource(f, 1, &ff,NULL);

free(vs);free(fs);

glCompileShader(v);
glCompileShader(f);

p = glCreateProgram();
glAttachShader(p,v);
glAttachShader(p,f);

glLinkProgram(p);
printProgramInfoLog(p);

glUseProgram(p);

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧