modelview matrix-glGetFloatv不能查询到modelview 矩阵。

问题描述

glGetFloatv不能查询到modelview 矩阵。

这个bug困扰我很久。
我用基于glkit编程,pan手势识别之后程序需要讲对应的顶点坐标计算出来。.

手势这边的代码是这样的:

if ([gestureRecognizer state] == UIGestureRecognizerStateChanged) {
    NSLog(@"pan2");
    CGPoint location = [gestureRecognizer locationOfTouch:0 inView:nil];
    GLKVector3 obj;
    GLfloat winZ=-1.0f;
    **gluGetObjectLocation**( location.x,location.y, winZ,obj);
    initialLine[i].Position=obj;
    initialLine[i].normal=obj;
    i++;
}

里面的函数 gluGetObjectLocation 是下面这样的:

void gluGetObjectLocation(GLfloat screenX,GLfloat screenY,GLfloat winZ,GLKVector3 obj)
{
    NSLog(@"location: %f,%f",screenX,screenY);
    GLfloat winX,winY;
    GLfloat mvmatrix[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    GLfloat projmatrix[16];
    GLint viewport[4];
    NSLog(@"modleview matrix1:n,%f,%f,%f,%f,n,%f,%f,%f,%f,n,%f,%f,%f,%f,n,%f,%f,%f,%f,",mvmatrix[0],mvmatrix[1],mvmatrix[2],mvmatrix[3],mvmatrix[4],mvmatrix[5],mvmatrix[6],mvmatrix[7],mvmatrix[8],mvmatrix[9],mvmatrix[10],mvmatrix[11],mvmatrix[12],mvmatrix[13],mvmatrix[14],mvmatrix[15]);
    glGetFloatv(GL_MODELVIEW_MATRIX,mvmatrix);
    glGetFloatv(GL_PROJECTION_MATRIX,projmatrix);
    glGetIntegerv(GL_VIEWPORT,viewport);
    NSLog(@"modleview matrix2:n,%f,%f,%f,%f,n,%f,%f,%f,%f,n,%f,%f,%f,%f,n,%f,%f,%f,%f,",mvmatrix[0],mvmatrix[1],mvmatrix[2],mvmatrix[3],mvmatrix[4],mvmatrix[5],mvmatrix[6],mvmatrix[7],mvmatrix[8],mvmatrix[9],mvmatrix[10],mvmatrix[11],mvmatrix[12],mvmatrix[13],mvmatrix[14],mvmatrix[15]);
    winX=screenX;
    winY=viewport[3]-screenY;
    gluUnProject(winX,winY,winZ,mvmatrix,projmatrix,viewport,obj);
    NSLog(@"obj:%f,%f,%f",obj.x,obj.y,obj.z);
    }

run.我发现glGetFloatv(GL_MODELVIEW_MATRIX,mvmatrix) 不工作.

modleview matrix1 是0, 没错.

modleview matrix2 还是 0, 就不对了.它应该已经读取了值出来,不能再是0.

2014-02-06 00:40:26.088 lianxi[467:70b] Cannot find executable for CFBundle 0x8b7f740 (not loaded)
2014-02-06 00:40:32.171 lianxi[467:70b] pan2
2014-02-06 00:40:32.172 lianxi[467:70b] location: 192.000000,574.500000
2014-02-06 00:40:32.173 lianxi[467:70b] modleview matrix1:
,0.000000,0.000000,0.000000,0.000000,
,0.000000,0.000000,0.000000,0.000000,
,0.000000,0.000000,0.000000,0.000000,
,0.000000,0.000000,0.000000,0.000000,
2014-02-06 00:40:32.173 lianxi[467:70b] modleview matrix2:
,0.000000,0.000000,0.000000,0.000000,
,0.000000,0.000000,0.000000,0.000000,
,0.000000,0.000000,0.000000,0.000000,
,0.000000,0.000000,0.000000,0.000000,
2014-02-06 00:40:32.174 lianxi[467:70b] obj:0.000000,0.000000,0.000000

请帮忙看看,这到底怎么回事啊,头都想痛了。谢谢!

解决方案

刚猪八戒上看到了你的问题。你都没设置这些矩阵拿到的当然都是0

时间: 2024-09-07 11:09:46

modelview matrix-glGetFloatv不能查询到modelview 矩阵。的相关文章

java实现OpenGL ES纹理映射的方法_java

本文实例讲述了java实现OpenGL ES纹理映射的方法.分享给大家供大家参考.具体如下: 1. GlRenderer.java文件: package net.obviam.opengl; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.content.Context; import android.opengl.GL

MapReduce实现矩阵乘法:实现代码

编程环境: java version "1.7.0_40" Eclipse Kepler Windows7 x64 Ubuntu 12.04 LTS Hadoop2.2.0 Vmware 9.0.0 build-812388 输入数据: A矩阵存放地址:hdfs://singlehadoop:8020/workspace/dataguru/hadoopdev/week09/matrixmultiply/matrixA/matrixa A矩阵内容: 3 4 6 4 0 8 matrixa

学习笔记DL004:标量、向量、矩阵、张量,矩阵、向量相乘,单位矩阵、逆矩阵

线性代数,面向连续数学,非离散数学.<The Matrix Cookbook>,Petersen and Pedersen,2006.Shilov(1977). 标量.向量.矩阵.张量. 标量(scalar).一个标量,一个单独的数.其他大部分对象是多个数的数组.斜体表示标量.小写变量名称.明确标量数类型.实数标量,令s∊ℝ表示一条线斜率.自然数标量,令n∊ℕ表示元素数目. 向量(vector).一个向量,一列数.有序排列.次序索引,确定每个单独的数.粗体小写变量名称.向量元素带脚标斜体表示.

R语言,如何根据row的index提取矩阵?

问题描述 R语言,如何根据row的index提取矩阵? 已知1.targetmatrix <- matrix(1:100, nrow = 20),2.targetindex <- c(2, 8, 12, 15, 19) [,1] [,2] [,3] [,4] [,5] [1,] 1 21 41 61 81 [2,] 2 22 42 62 82 [3,] 3 23 43 63 83 [4,] 4 24 44 64 84 [5,] 5 25 45 65 85 [6,] 6 26 46 66 86

OpenCascade Matrix

OpenCascade Matrix eryar@163.com 摘要Abstract:本文对矩阵作简要介绍,并结合代码说明OpenCascade矩阵计算类的使用方法. 关键字Key Words:OpenCascade.Matrix.C++ 一.引言Introduction 矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究.作为解决线性方程的工具,矩阵也有不短的历史.1693年,微积分的发现者之一莱布尼茨建立了行列式论(theory of determinants).1750年,克拉默又定

重构-C++实现矩阵的简单实例_C 语言

重构-C++实现矩阵的简单实例 #include <iostream> #include <cmath> using namespace std; double cofactor(double* detPtr,int rank,int t); //代数余子式 double valDet( double *detPtr, int rank); //行列式 template <class T> void exchange(T& t1,T& t2){T tem

《写给程序员的数据挖掘实践指南》——5.3混淆矩阵

5.3混淆矩阵 到目前为止,通过计算下列精确率百分比,我们对分类器进行评估: 有时,我们可能希望得到分类器算法的更详细的性能.能够详细揭示性能的一种可视化方法是引入一个称为混淆矩阵(confusion matrix)的表格.混淆矩阵的行代表测试样本的真实类别,而列代表分类器所预测出的类别. 它之所以名为混淆矩阵,是因为很容易通过这个矩阵看清楚算法产生混淆的地方.下面以女运动员分类为例来展示这个矩阵.假设我们有一个由100名女子体操运动员.100名WNBA篮球运动员及100名女子马拉松运动员的属性

深入理解Android Matrix理论与使用的详解

以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用GDI+的时候再次学习如何使用矩阵来变化图像,看了之后在这里总结说明.首先大家看看下面这个3 x 3的矩阵,这个矩阵被分割成4部分.为什么分割成4部分,在后面详细说明. 首先给大家举个简单的例子:现设点P0(x0, y0)进行平移后,移到P(x,y),其中x方向的平移量为△x,y方向的平移量为△y,那么,点P(x,y)的坐标为:x = x0  + △x y = y0  + △y采用矩阵表达上述如下: 上述也类似与图像的平移,通

我的opengl编程学习(一)(简介、绘制图像、三维观察、光照)

这是我第二次学习OPENGL,第一次学习是在大二的计算机图形学课堂上,那是对opengl只是走马观花,现在过了两年,我打算把opengl进行新一编完整而系统的学习,有三个目的:1.熟练掌握opengl编程,2从opegl的体系中加深对计算机图形渲染管线的整个体系的了解,作为深入学习GPU编程的进阶,3.制作好看的CG作品. 这里是我在学习<opengl programming guide fifth edition>过程的从头到尾的整个的学习笔记,放在这里,给自己做个以后的参考,也想与大家交流