qt opengl中 glReadPixels 获取鼠标位置的颜色失效 处理方法

标签: qt opengl
760人阅读 评论(0) 收藏 举报
分类:
void SelectTrend::mousePressEvent(QMouseEvent *event)
{

float pix[3] = { 0.0 };
glReadPixels(event->x(), height() - event->y(), 1, 1, GL_RGB, GL_FLOAT, pix);
qDebug() << pix[0] << " " << pix[1] << " " << pix[2];

}


我写了这一段代码,想获取鼠标单击位置的白色位置的颜色,但是获取出来,都是 0,0,0,显然是错误的。



偶然间发现,当窗口触发刷新时,glReadPixels 就可以读取了



解决方法很简单,只要在获取颜色之前,加一个 UpdateGL()就可以了


void SelectTrend::mousePressEvent(QMouseEvent *event)
{
updateGL();
float pix[3] = { 0.0 };
glReadPixels(event->x(), height() - event->y(), 1, 1, GL_RGB, GL_FLOAT, pix);
qDebug() << pix[0] << " " << pix[1] << " " << pix[2];

}


查看评论

获取屏幕上鼠标的位置坐标及其RGB颜色值

  • 2009年03月20日 23:28
  • 1.79MB
  • 下载

【OPENGL】glReadPixels读取深度信息出现的问题

问题描述:我在用glReadPixels读取深度信息的时候,最后得到的结果是一个极小的一个趋于0的数。glReadPixels((int)10, (int)10, 1, 1, GL_DEPTH_COM...
  • u012130706
  • u012130706
  • 2017-10-28 08:17:26
  • 328

glReadPixels

glReadPixels: 从frame buffer里读取一段pixels void glReadPixels( GLint x, GLint y, GLsizei width,GLsizei ...
  • huangmeimao
  • huangmeimao
  • 2012-05-23 16:19:11
  • 1358

glReadPixels的使用问题

想把屏幕上的二维坐标转换成OpenGL下面的三维坐标一般常用的方法是: GLint    viewport[4]; GLdouble modelview[16]; GLdouble projectio...
  • Augusdi
  • Augusdi
  • 2012-05-25 09:03:10
  • 11553

OpenGL如何利用glDrawPixels来读取glreadPixels保存的文件

代码例子: void drawPixels() { FILE *pPixelsFile = 0; pPixelsFile = fopen("d:\\grab.bmp", "rb");...
  • ganpengjin1
  • ganpengjin1
  • 2014-09-19 11:50:37
  • 2521

OpenGL ES 学习教程(十五) 从 颜色缓冲区(FBO的颜色附着)中 读取颜色数据 保存到图片(FreeImage)

GL中提供读取像素数据的API glReadPixels,方便实现游戏中截屏功能。
  • cp790621656
  • cp790621656
  • 2016-12-07 02:39:47
  • 1731

获取鼠标点击坐标等__颜色选择器的制作

获取鼠标点击坐标等__颜色选择器的制作 效果图: 做该效果的难点是js实现点击颜色选择器跟随鼠标移动。 这里使用jQuery实现该效果 1. 编写html页面,放置页面所需要的元素。...
  • xiaobing_hope
  • xiaobing_hope
  • 2015-09-13 11:56:19
  • 1121

QT:如何获取鼠标坐标点和键盘响应事件

原文地址::http://blog.sina.com.cn/s/blog_9c4b67b00102vdcd.html 相关文章 1、QT中鼠标位置获取问题之event->globalPos...
  • xqhrs232
  • xqhrs232
  • 2017-10-11 11:40:09
  • 1615

Qt 获取当前窗口背景色

//获取背景色 QPalette pal = this->palette(); QBrush brush = pal.background(); QColor col = brush.color...
  • hushiwei1993
  • hushiwei1993
  • 2017-04-27 12:15:31
  • 899

大漠后台绑定窗口后GetColoer()取不到前台颜色的解决办法

问题描述: 用大漠插件绑定了自己的程序窗口后,无法用dm.GetColoer()来获取前点坐标点的颜色,不知道是作者功力不济还是怎么回事. 解决办法: 作者捣腾了老半天也没有搞定,最后想出来...
  • yangxiaozi
  • yangxiaozi
  • 2015-07-22 15:12:08
  • 1100
    个人资料
    等级:
    访问量: 5488
    积分: 136
    排名: 116万+
    文章分类
    文章存档