[OpenGL::Shader]This program requires support for GLSL shaders

头像
523066680
Administrator
Administrator
帖子: 369
注册时间: 2016年07月19日 12:14
拥有现金: 锁定
储蓄: 锁定
Has thanked: 32 times
Been thanked: 36 times
联系:

[OpenGL::Shader]This program requires support for GLSL shaders

帖子 #1 523066680 » 2018年11月03日 11:15

运行 shader-test.pl

提示:
This program requires support for GLSL shaders.
Press 'Q' or 'Esc' to exit, or any other key to toggle shader.
[Finished in 0.3s]


这是由于 Portable Perl V5.24 携带的OpenGL模块有故障。

此时需要 OpenGL-0.70.tar.gz ,解压,用 portableshell.bat 配置的环境进入该目录

依次执行
perl Makefile.PL
dmake
dmake install

D:\temp\OpenGL-0.70>perl Makefile.PL
> run as `perl Makefile.PL help` to show user options
> $verbose set to 0 - enable by running as `perl Makefile.PL verbose`
>
> This looks like OpenGL Version: 4.5.0 NVIDIA 369.30
> Found FreeGLUT v20801
>
> Using interface: FREEGLUT
>
> Checking if your kit is complete...
> Looks good
> Generating a dmake-style Makefile
> Writing Makefile for OpenGL
> Writing MYMETA.yml and MYMETA.json


安装成功后可以试运行 D:\temp\OpenGL-0.70 里面的 test.pl
以及 D:\temp\OpenGL-Shader-1.01 里面的 shader-test.pl

执行以下程序可以查看支持的着色器类型:

代码: 全选

use Data::Dumper;
use OpenGL qw/ :all /;
use OpenGL::Shader;

glutInit();
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE );
our $WinID = glutCreateWindow("title");

my $shaders = OpenGL::Shader->GetTypes();

glutDestroyWindow($WinID);

print Dumper $shaders;

通常就是以下内容:

代码: 全选

$VAR1 = {
          'ARB' => {
                     'name' => 'ARB',
                     'module' => 'OpenGL::Shader::ARB',
                     'description' => 'ARBfp1.0 and ARBvp1.0 Assembly',
                     'version' => '1.0'
                   },
          'GLSL' => {
                      'description' => 'OpenGL Shader Language',
                      'version' => '4.50',
                      'name' => 'GLSL',
                      'module' => 'OpenGL::Shader::GLSL'
                    },
          'CG' => {
                    'module' => 'OpenGL::Shader::CG',
                    'name' => 'CG',
                    'version' => '1.00',
                    'description' => 'nVidia\'s Cg Shader Language'
                  }
        };

创建 GLSL 着色器对象:

代码: 全选

my $shdr = new OpenGL::Shader('GLSL');

如果在新建GLSL着色器对象的时候提示错误信息,考虑重新安装 OpenGL 模块。

回到 “TroubleShooting”

在线用户

用户浏览此论坛: 没有注册用户 和 1 访客