求救 opengl 3.2 投影 投不出来 交互式图形学 基于opengl着色器的自顶向下方法 第六版

问题描述

看交互式图形学基于opengl着色器的自顶向下方法第六版运行后面的代码平行投影和透视投影投不出来完全复制附录代码也投不出来平行投影的顶点着色器代码为invec4vPosition;uniformmat4model_view;uniformmat4projection;voidmain(){gl_Position=projection*model_view*vPosition;}

去掉*model_view就可以投出平行投影加上去就什么都没有了是不是model_view矩阵出问题了完全用的作者的代码GLfloatradius=1.0;GLfloattheta=0.0;GLfloatphi=0.0;Angel::vec4eye(radius*cos(theta),radius*sin(theta)*cos(phi),radius*sin(theta)*sin(phi),1.0);Angel::vec4at(0.0,0.0,0.5,1.0);Angel::vec4up(0.0,1.0,0.0,0.0);Angel::mat4mv=LookAtX(eye,at,up);glUniformMatrix4fv(model_view,1,GL_TRUE,mv);

作者的LookAt代码为GLfloatdot(constvec4&u,constvec4&v){returnu.x*v.x+u.y*v.y+u.z*v.z+u.w+v.w;}GLfloatlength(constvec4&v){returnstd::sqrt(dot(v,v));}vec4normalize(constvec4&v){returnv/length(v);}Angel::mat4LookAt(constAngel::vec4&eye,constAngel::vec4&at,constAngel::vec4&up){Angel::vec4n=normalize(eye-at);Angel::vec4u=Angel::vec4(normalize(cross(up,n)),0.0);Angel::vec4v=Angel::vec4(normalize(cross(n,u)),0.0);Angel::vec4t=Angel::vec4(0.0,0.0,0.0,1.0);Angel::mat4c=Angel::mat4(u,v,n,t);returnc*Translate(-eye);}

求救了

解决方案

时间: 2024-09-20 01:08:09

求救 opengl 3.2 投影 投不出来 交互式图形学 基于opengl着色器的自顶向下方法 第六版的相关文章

《OpenGL ES应用开发实践指南:Android卷》—— 3.2 编译着色器

3.2 编译着色器 现在我们已经把着色器源代码从文件中读出来了,下一步就是编译每个着色器了.我们要创建一个新的辅助类,它可以创建新的OpenGL着色器对象.编译着色器代码并且返回代表那段着色器代码的着色器对象.一旦写出样板代码,在未来的项目中就可以重用了. 作为开始,创建一个名为ShaderHelper的新类,并在类中添加如下代码: 这些代码会作为着色器辅助类的基础.与以前一样,不要忘了把导入加进代码中:如果你在使用静态导入时碰到什么问题,请参考1.5节:在本书的剩余部分,我们会一直遵循这个样式

《OpenGL ES应用开发实践指南:Android卷》——第3章 编译着色器及在屏幕上绘图

第3章 编译着色器及在屏幕上绘图 本章会继续上一章开始的工作.作为本章的开发计划,我们首先加载并编译前面定义的着色器,然后把它们链接在一起放在OpenGL的一个程序里.我们接下来就可以用着色器程序在屏幕上绘制空气曲棍球桌子了.打开上一章启动的AirHockey1项目,并从那里开始.

《OpenGL编程指南》一第2章 着色器基础

第2章 着色器基础 本章目标阅读完本章内容之后,你将会具备以下能力:区分OpenGL创建图像所用的不同类型的着色器.使用OpenGL着色语言构建和编译着色器.使用OpenGL中提供的多种机制将数据传入着色器.使用高级GLSL着色技巧来创建可复用性更强的着色器.本章将介绍如何在OpenGL中使用可编程着色器(shader).首先介绍OpenGL着色语言(OpenGL Shading Language,通常也称作GLSL),然后详细解释着色器将如何与OpenGL应用程序交互.这一章将会包含以下几节:

OpenGL ES 着色器中问题解决技巧

OpenGL ES 着色器中问题解决技巧 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 灰暗的一天, 终于见到一丝曙光, 心情终于从沉重变得略有轻松, 虽然, 一早就明白, 曙光终究会闪现,

Compiz基于OpenGL的混合型窗口管理器

compiz是基于 OpenGL 的混合型窗口管理器,通俗一点理解,就是可以在Linux桌面系统内提供类似于http://www.aliyun.com/zixun/aggregation/15470.html">Vista和Mac OS的3D桌面效果.在开发之处,compiz一部分人员分离出来开发另一个有着对抗意味的Beryl,两者互相竞争,compiz以稳定性著称,而Beryl则有着广泛的窗口修饰资源以及先进的实验性特效. 最终,Beryl屈服于Compiz,两者合作就为我们呈现了现在功

《OpenGL编程指南(原书第9版)》——2.7 独立的着色器对象

2.7 独立的着色器对象 高级技巧 在OpenGL 4.1版本之前(不考虑扩展功能),在应用程序中,同一时间只能绑定一个着色器程序.如果你的程序需要使用多个片元着色器来处理来自同一个顶点着色器的几何体变换数据,那么这样会变得很不方便.此时只能将同一个顶点着色器复制多份,并且多次绑定到不同的着色器程序,从而造成了资源的浪费和代码的重复. 独立的着色器对象可以将不同程序的着色阶段(例如顶点着色)合并到同一个程序管线中. 第一步,我们需要创建用于着色器管线的着色器程序.我们可以调用glProgramP

基于OpenGL ES 的深度学习框架编写

背景与工程定位 背景 项目组基于深度学习实现了视频风格化和人像抠图的功能,但这是在PC/服务端上跑的,现在需要移植到移动端,因此需要一个移动端的深度学习的计算框架. 同类型的库 caffe-Android-lib 目前应该是最便于集成使用的深度学习框架库.  tensorflow和mxnet据说也有对应的android库,因时间原因暂未测试.  CNNdroid,网址https://zhuanlan.zhihu.com/p/25259452,这个是用  renderscript 作优化的深度学习

《OpenGL编程指南》一1.1 什么是OpenGL

1.1 什么是OpenGL OpenGL是一种应用程序编程接口(Application Programming Interface, API),它是一种可以对图形硬件设备特性进行访问的软件库.OpenGL库的4.3版本(即本书所使用的版本)包含了超过500个不同的命令,可以用于设置所需的对象.图像和操作,以便开发交互式的3维计算机图形应用程序. OpenGL被设计为一个现代化的.硬件无关的接口,因此我们可以在不考虑计算机操作系统或窗口系统的前提下,在多种不同的图形硬件系统上,或者完全通过软件的方

《OpenGL编程指南(原书第9版)》——2.5 着色器的编译

2.5 着色器的编译 OpenGL着色器程序的编写与C语言等基于编译器的语言非常类似.我们使用编译器来解析程序,检查是否存在错误,然后将它翻译为目标代码.然后,在链接过程中将一系列目标文件合并,并产生最终的可执行程序.在程序中使用GLSL着色器的过程与之类似,只不过编译器和链接器都是OpenGL API的一部分而已. 图2-1给出了创建GLSL着色器对象并且通过链接来生成可执行着色器程序的过程. 对于每个着色器程序,我们都需要在应用程序中通过下面的步骤进行设置. 对于每个着色器对象: 1)创建一