编辑器中材质参数设置以及记录保存功能
2017-03-05 17:15
706 查看
PBR 参数调整记录功能
功能介绍:使用PBR渲染,对于其中的roughness 以及 matelness 设置,并记录该次的参数值。方便下次打开的时候自动读取xml文件,并设置相应的值。
记录结构体
材质的buffer 的管理, 数据保存为GLUbyte (unsigned char 类型)
数据写入 uniformbuffer
下图所示为设置的参数,从xml文件中读取
获取材质渲染shader 中uniform 参数 , 使用 glGetactiveUniform() API 即可
实际效果
功能介绍:使用PBR渲染,对于其中的roughness 以及 matelness 设置,并记录该次的参数值。方便下次打开的时候自动读取xml文件,并设置相应的值。
记录结构体
struct matPBRInfo { int nShininess; int nRougthness; bool nHasTexture; string nTextureFile; } Typedef std:: map<string, matPBRInfo> TMAT_PBRINFO;
材质的buffer 的管理, 数据保存为GLUbyte (unsigned char 类型)
typedef unsigned char GLUbyte; std:: vector<GLUbyte> m_buffer; void Material:: reflushUniformValue(int location, const GLubyte* data, int off){ Glint offset = offsets[location] + off * sizeof(GLfloat); GLint dataSize; if(off){ dataSize = sizeof(GLfloat); } else{ GLint nextoffset = offsets[location + 1]; if(nextoffset < 0 ) nextoffset = blockSize; dataSize = nextoffset - offset; } for(int i =0 ; i < dataSize ; i ++){ m_buffer[offset + i ] = data[i]; } }
数据写入 uniformbuffer
void Material::rebufferData(){ m_uniformsBuffer - >bind(); m_uniformsBuffer -> write(0, blockSize, m_buffer.data()); m_uniformBuffer->release(); }
下图所示为设置的参数,从xml文件中读取
获取材质渲染shader 中uniform 参数 , 使用 glGetactiveUniform() API 即可
void ShaderManager:: getUniform(QOpenGLShaderProgramPtr shader) { QOpenGLContext* context = QOpenGLContext::currentContext(); QASSERT(context); QOpenGLFumtions_4_3_Core* m_funcs = nullptr; m_funcs = context -> versionFunctions<QOpenGLFunctions_4_3_Core>(); m_funcs->initializeOpenGLFunctions(0; GLuint program = shader-> programID(); int total = -1; m_funcs-> glGetProgramiv(program, GL_ACTIVE_UNIFORMS, &total); shaderUniformType.clear(); for(int i =0; i<total; ++i) { int name_len = -1, num = -1; GLenum typr = GL_ZERO; chat name[50]; m_funcs->glGetActiveUniform(program, GLunit(i), sizeof(name) -1, &name_len, &num., &type, name); name[name_len] = 0; shaderUniformType.insert(std:: make_pair(name, type)); } }
实际效果
相关文章推荐
- FormEditor 开发记录5 编辑器的Dirty状态设置 以及保存
- MOSS2010的列表视图参数设置以及列表记录样式设置
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- winXP以及win2003缺省文件搜索功能都比2000差(按包含文字搜索文件),需设置
- FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
- 室外建筑表现3Dmax和vray常用材质参数设置
- 记录类型以及开放数组参数
- jquery ui 实现table的sortable功能以及过滤记录功能
- .net中执行存储过程以及参数设置
- FCKeditor 2.0在线编辑器的设置与修改以及使用
- 如何设置VS2008 辅助编译代码提示相关函数以及相关函数的参数
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 利用ASP.Net状态保存的视图机制记录网页内部参数值
- WinDbg 入门指导(3)-WinDbg中常用的功能以及设置
- 操作链表,需要记住保存前一个结点,以及记录下一个节点,否则容易进入死循环,或者数据出错。
- Adobe (Acrobat)Reader 6.0以上版本支持对有特殊权限的PDF进行添加注释,填写标单以及保存的功能。
- 参数设置功能设计草案
- FCKeditor 2.0在线编辑器的设置与修改以及使用
- “服务器上远程桌面连接的加密设置”,“客户机的具有加密功能远程桌面功能的安装”以及“客户机证书的安装”等操作