1 Star 0 Fork 1

teebaiwan / Golang_OpenGL_dev

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

#Golang_OpenGL_dev Language License

###写在前面 学Golang断断续续也有一段时间了,一直想写个gui程序,找到了go-ui这个库,写ui很简单,但是又发现无法做OpenGL,于是又找到了go-glfw,发现与OpenGL教程什么写的非常匹配,除了个别c++和Golang之间的细微差别,其他没有什么特别多的问题,同时也参考了go-glfw的examples,当然例子里面的图形比较复杂并且也使用了图片纹理(texture),我提取了其中编译绑定着色器的函数封装_compileShader.go_,并且将顶点着色器和像素着色器分离到单独的文件中(fragmentShader.fsvertexShader.vs)。

###2016年9月26日21:03:42 发现了第一个坑,可能是Golang或是OpenGL基础的问题,问题出现在使用gl.DrawElements绘制索引缓冲对象的最后一个参数是gl.PtrOffset类型的,需要用强制类型转换,因为Golang的指针偏移是一个专用类型,在c或是c++是int类型

###2016年9月27日21:37:48 用gl.DrawElements画图时可以使用最后一个参数指定偏移量,这个偏移量是相对于索引缓冲对象的起始位置的,起始位置为0,偏移量单位是byte,一般是3*4的倍数。使用偏移量可以和第二个参数count int32配合指定所要画的图形。

###2016年9月28日09:01:06 开始系统学习GLSL,现在简单理解顶点着色器是接受顶点数据,转换或者重新排列顶点位置信息、颜色和其他信息的处理程序,可以通过in关键字定义OpenGL输入的顶点属性,gl_Position这个内置变量会把位置输出到正式的设备坐标上。而像素着色器则是对每一个顶点的颜色信息作处理然后输出到正式的像素颜色上面。

###2016年10月11日08:57:32 发现在Sublime Text中有一个GLSL插件可以给.fs``.vs等文件高亮语法显示,我看教程介绍可以把着色器程序直接放在程序中以字符串形式调用,但是我还是准备设计一下把着色器放在的单独的文件之中,但是一个文件里面可以放多个着色器代码,用特殊的注释符号分割开,调用的时候只需要load(shaderName)就可以了这样就会方便很多

###现阶段屏幕截图 Screenshot

Copyright (c) 2016, 鱼米三香 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the {organization} nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

用Golang做OpenGL的开发尝试 展开 收起
Go
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/teebaiwan/Golang_OpenGL_dev.git
git@gitee.com:teebaiwan/Golang_OpenGL_dev.git
teebaiwan
Golang_OpenGL_dev
Golang_OpenGL_dev
master

搜索帮助