最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenGL實現(xiàn)鼠標(biāo)移動方塊

 更新時間:2020年08月18日 15:54:19   作者:lang_dye  
這篇文章主要為大家詳細(xì)介紹了OpenGL實現(xiàn)鼠標(biāo)移動方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了OpenGL實現(xiàn)鼠標(biāo)移動方塊的具體代碼,供大家參考,具體內(nèi)容如下

思路:用變量設(shè)定方塊的坐標(biāo),然后根據(jù)鼠標(biāo)的位移更改方塊的變量坐標(biāo)。

注意:方塊的繪圖坐標(biāo)系和世界坐標(biāo)系是重合的,鼠標(biāo)所在的坐標(biāo)是以窗口的左上角為原點(0,0)的坐標(biāo)系,窗口的左下角的世界坐標(biāo)系為gluOrho2D(left, right, bottom, top)中的(left, bottom)。所以鼠標(biāo)的坐標(biāo)(xMouse, yMouse)轉(zhuǎn)化為世界坐標(biāo)(x, y)為: x = xMouse;   y = top - yMouse.且鼠標(biāo)位移的Y增量在世界坐標(biāo)系中式減量。

#include <GL/glut.h>
#include "Graphics.h"
 
int x1 = 0, y1 = 0, x2 = 100, y2 = 100; //方塊的左下角坐標(biāo)和右上角坐標(biāo)
int x = 0, y = 0; //鼠標(biāo)位置
int dx = 0, dy = 0; //鼠標(biāo)位移
int b = 0;  //判斷鼠標(biāo)是否在方塊內(nèi)
 
void init()
{
  glMatrixMode(GL_PROJECTION);
  gluOrtho2D(0.0, 800.0, 0.0, 800.0); //窗口左下角的世界坐標(biāo)系為 (0,0)
  glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
}
 
void test()
{
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f(1.0f, 0.0f, 0.0f);
  glRecti(x1, y1, x2, y2);
  glutSwapBuffers();
}
 
int inRect(int xMouse, int yMouse)
{
  yMouse = 800 - yMouse;
  if (xMouse < x2 && xMouse > x1 && yMouse < y2 && yMouse > y1)
 return 1;
  else
 return 0;
}
 
void myMouse(int button, int state, int xMouse, int yMouse)
{
  if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
 x = xMouse; //xMouse, yMouse是以窗口的左上角為原點(0,0)的窗口坐標(biāo)系中的點
 y = yMouse;
 if (inRect(x, y)) b = 1;
  }
  if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) b = 0; //當(dāng)移動較快時鼠標(biāo)會在刷新間隔移出方塊,所以用DOWN和UP來判斷鼠標(biāo)在方塊內(nèi)
}
 
void moveMouse(int xMouse, int yMouse)
{
  if (b) {
 dx = xMouse - x;
 dy = yMouse - y;
 x1 = x1 + dx;
 x2 = x2 + dx;
 y1 = y1 - dy; //鼠標(biāo)的窗口坐標(biāo)系和世界坐標(biāo)系的Y軸相反,所以鼠標(biāo)向Y軸的正方向移動的時候,在世界坐標(biāo)系是向Y軸的負(fù)方向移動
 y2 = y2 - dy;
 x = xMouse;
 y = yMouse;
  }
}
 
int main(int argc, char** argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  glutInitWindowPosition(0, 0); 
  glutInitWindowSize(800, 800);
  glutCreateWindow("Move Square");
  init();
  glutDisplayFunc(test);
  glutIdleFunc(test); //移動是動畫,為了流暢,必須開這個
  glutMouseFunc(myMouse);
  glutMotionFunc(moveMouse);
  glutMainLoop();
 
  return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • Qt中TCP協(xié)議通信詳解

    Qt中TCP協(xié)議通信詳解

    這篇文章主要為大家詳細(xì)介紹了Qt中TCP協(xié)議通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++ open()和read()函數(shù)使用詳解

    C++ open()和read()函數(shù)使用詳解

    這篇文章主要介紹了C++中open()和read()函數(shù)的使用方法和參數(shù),open()函數(shù)用于打開文件并返回文件描述符,read()函數(shù)用于從文件描述符中讀取數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 帶你用C語言實現(xiàn)strtok和字符串分割函數(shù)

    帶你用C語言實現(xiàn)strtok和字符串分割函數(shù)

    下面小編就為大家?guī)硪黄猚語言中字符串分割函數(shù)及實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-09-09
  • C++關(guān)于Makefile的詳解含通用模板

    C++關(guān)于Makefile的詳解含通用模板

    今天小編就為大家分享一篇關(guān)于C++關(guān)于Makefile的詳解含通用模板,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用

    詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用

    這篇文章主要介紹了詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • boost字符串處理函數(shù)format的用法

    boost字符串處理函數(shù)format的用法

    這篇文章介紹了boost字符串處理函數(shù)format的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C語言從編譯到運行過程詳解

    C語言從編譯到運行過程詳解

    這篇文章主要介紹了C語言從編譯到運行的一個過程的相關(guān)資料,需要的朋友可以參考下面文章具體的內(nèi)容
    2021-09-09
  • C++中點操作符和箭頭操作符的使用詳解

    C++中點操作符和箭頭操作符的使用詳解

    本篇文章介紹了,C++中點操作符和箭頭操作符的使用詳解。需要的朋友參考下
    2013-05-05
  • 在C++17中實現(xiàn)無鎖數(shù)據(jù)結(jié)構(gòu)的方法詳解

    在C++17中實現(xiàn)無鎖數(shù)據(jù)結(jié)構(gòu)的方法詳解

    在探索?C++17?中的無鎖數(shù)據(jù)結(jié)構(gòu)之前,我們首先需要理解無鎖編程的基本概念及其在現(xiàn)代軟件開發(fā)中的重要性,在這個章節(jié)中,我們將深入探討無鎖編程的概念,以及它如何滿足人類對于更高效、更可靠軟件的本能需求,文中通過代碼示例介紹的非常詳細(xì),感興趣的朋友可以參考下
    2023-12-12
  • TensorFlow源代碼構(gòu)建流程記錄解析

    TensorFlow源代碼構(gòu)建流程記錄解析

    這篇文章主要為大家介紹了TensorFlow源代碼構(gòu)建流程記錄解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論

永春县| 皮山县| 曲周县| 乐平市| 沂源县| 墨江| 通渭县| 盈江县| 桂平市| 昆山市| 历史| 大新县| 固安县| 山东省| 明星| 滕州市| 潜山县| 蒲城县| 宁乡县| 绵阳市| 三穗县| 莱阳市| 苏州市| 油尖旺区| 广东省| 称多县| 蒙自县| 黄龙县| 曲阳县| 巩义市| 扎赉特旗| 绵阳市| 肥西县| 额济纳旗| 阿坝| 蒙山县| 门头沟区| 呼图壁县| 台江县| 新巴尔虎右旗| 郧西县|