lsong98cn 2015-12-19 10:52 采纳率: 0%
浏览 1880

OpenGL中的ModelMatrix如何在Shader中使用

以下是普通的C# OpneGL代码:

        GL.Viewport(0, 0, glWin.Width, glWin.Height);
        GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

        GL.MatrixMode(MatrixMode.Modelview);
        GL.LoadIdentity();
        GL.Scale(0.5, 0.5, 0.5);
        GL.Rotate(60, 1, 0, 0);
        GL.Translate(1, 0, 0);
        float[] mat = new float[16];
        GL.GetFloat(GetPName.ModelviewMatrix, mat);
        GL.GetFloat(GetPName.ProjectionMatrix, mat);

        GL.Begin(PrimitiveType.Triangles);

        GL.Color3(Color.MidnightBlue);
        GL.Vertex2(-1.0f, 1.0f);
        GL.Color3(Color.SpringGreen);
        GL.Vertex2(0.0f, -1.0f);
        GL.Color3(Color.Ivory);
        GL.Vertex2(1.0f, 1.0f);

        GL.End();

移植到WebGL时,由于只能使用Shader的关系,所以先通过 GetFloat 取得了C#运行时的ModelMatrix值。然后在 js 中直接把该值传入到下面的VertexShader的MVMatrix里面,但是 画出的效果却不相同。

attribute vec3 ModelVertex;  
uniform mat4 MVMatrix;  

void main(void){  
gl_Position = vec4(ModelVertex, 1.0) * MVMatrix;
}  

Shader是不是写错了?

  • 写回答

2条回答

  • Robot-S 2015-12-19 10:55
    关注

           学了接近一个月的OpenGL,终于要排上用场了...好吧,就从学到的shader(着色器)开刀吧。
           先简单的介绍shader,shader其实是显卡的功能,就是利用显卡的GPU去做图像处理的工作,而不是CPU,这样可以在一些复杂的大程序中释放......
    答案就在这里:OpenGL中shader使用
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)