metahook吧 关注:695贴子:11,488
  • 4回复贴,共1

趁热打铁。。关于着色器的渲染范围

只看楼主收藏回复

今天在网上找了GLSL的教程跟着做了一下,效果是出来了,奇怪的是着色器直接渲染了整个游戏屏幕而不是只渲染在我创建出来的320*240的小屏幕上,琢磨半天一头雾水。。。代码是这样的:各位看一下感谢!!


回复
1楼2017-09-18 17:42
    1、请不要频繁glReadPixels和glTexImage,“从GPU往内存传输数据” 和“CPU往GPU发送数据”的过程是非常慢的
    2、请在渲染原始画面的时候就直接渲染到framebuffer(绑tex)上,再用tex画到屏幕上
    3、请不要频繁编译着色器对象


    以上


    回复
    2楼2017-09-18 19:55
      顺便说一下,如果你绑定了顶点着色器,那么顶点着色器是可以对最终输出的顶点做出调整的,在这个栗子中也就是说可以影响到你输出的画面的大小
      请自查顶点着色器


      收起回复
      3楼2017-09-18 19:56
        ① Shader编译一次就行
        ② 查询FBO使用方法
        ③ 渲染到小屏幕的方法:
        - 1. 创建一个FBO,绑定一个纹理作为颜色缓冲区
        - 2. 渲染游戏场景到屏幕
        - 3. 把屏幕拷贝到FBO中(相当于把屏幕图像复制到纹理中)
        - 4. 启用Shader
        - 5. 把FBO的颜色缓冲区纹理绘制到屏幕上(绘制小屏幕,使用Shader进行着色)
        - 6. 关闭Shader


        回复
        4楼2017-09-19 23:42