如何旋转这个 openGl 代码

2023-12-08

在这段代码中,我尝试绘制简单的奥林匹克环并旋转它...下面的工作正常,但我无法旋转环..帮助我解决这个问题...

void myReshape (int width, int height)
{
  glViewport (0, 0, width, height);    
  glMatrixMode (GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D (-5, 105, -5, 105);
  glMatrixMode (GL_MODELVIEW);
  glLoadIdentity ();
  glTranslatef (0.375, 0.375, 0.0);
}


int main (int argc, char **argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); 
  glutInitWindowPosition(100,100); 
  glutInitWindowSize(110*PIXEL_SIZE, 110*PIXEL_SIZE);
  glutCreateWindow ("Olymipc Rings  ||  rotation  "); 
  glClearColor(1.0, 1.0, 1.0, 0.0);  
  glPointSize(PIXEL_SIZE);          
  glShadeModel (GL_FLAT);       
  glutDisplayFunc(display);
  glutReshapeFunc(myReshape);
  glutMainLoop(); 
  return 0; 
}

在绘制环之前使用 glRotatef(axis_x,axis_y,axis,z, angle) 函数。 如果你想继续旋转环,请始终在 main() 函数中使用 glutIdle(myidle) 并增加角度值,并使用 glutPostRedisplay()。 如果您不希望旋转影响其他绘图,请在环形绘图之前和之后使用 glPushMatrix() 和 glPopMatrix() 。 例如,如果您想绕 x 轴旋转环,您的代码将如下所示

float angle=0;

void display (void) {

  glClear(GL_COLOR_BUFFER_BIT); 
  glBegin(GL_LINE_LOOP);
  glVertex2i(-1,-1);
  glVertex2i(100,-1);
  glVertex2i(100,100);
  glVertex2i(-1,100);
  glEnd();

 glPushMatrix(); //enters temporarily in a stack 

  for(int i = 0 ; i <5; i++)
  {
      glRotatef(1,0,0, angle)
      glColor3f(color[i][0],color[i][1],color[i][2]);
      draw_circle(center[i][0],center[i][1],ring_radius);

  }
glPopMatrix(); // comes out of the stack

  glScalef(0.001, 0.001, 0.001);
  drawText(MESSAGE);
  glFlush();             

}


void myidle()
{
angle++; //angle value keeps on increasing
glutPostRedisplay(); // draws your drawing with updated value of angle to the screen
}

int main (int argc, char **argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); 
  glutInitWindowPosition(100,100); 
  glutInitWindowSize(110*PIXEL_SIZE, 110*PIXEL_SIZE);
  glutCreateWindow ("Olymipc Rings  ||  rotation  "); 
  glClearColor(1.0, 1.0, 1.0, 0.0);  
  glPointSize(PIXEL_SIZE);          
  glShadeModel (GL_FLAT);       
  glutDisplayFunc(display);
  glutIdleFunc(myidle); //just like DisplayFunc keeps on getting calls
  glutReshapeFunc(myReshape);
  glutMainLoop(); 
  return 0; 

了解 glPopMatrix()、glPushMatrix() 和回调函数(如 glutIdleFunc())。

我希望这个能帮上忙!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何旋转这个 openGl 代码 的相关文章

  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • 存储 OpenGL 状态

    假设我正在尝试用 C 制作某种小型 opengl 图形引擎 我读过通过访问 opengl 状态glGet 函数可能非常昂贵 虽然访问 opengl 状态似乎是一个经常操作 并且强烈建议将 opengl 状态的副本存储在具有快速读 写访问权限
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 如何将旋转的 NetCDF 转换回正常的纬度/经度网格?

    我有一个带有旋转坐标的 NetCDF 文件 我需要将其转换为正常的纬度 经度坐标 经度为 180到180 纬度为 90到90 library ncdf4 nc open dat nf 对于尺寸 它显示 1 5 variables exclu
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • OpenGL:伽玛校正图像看起来不线性

    我使用 OpenGL 进行渲染 当我将线性值写入默认帧缓冲区 没有任何伽玛校正 时 它们在我的显示器上显示为线性 这违背了我认为我所知道的关于伽马校正的一切 如下所述 http gamedevelopment tutsplus com ar
  • 致命错误 gl.h 包含在 glew.h 之前

    include
  • glDrawElements 只绘制半个四边形

    这是我的功能 void Object draw2 if mIsInitialised return Tell OpenGL about our vertex and normal data glEnableClientState GL VE
  • 简单的openGL程序无法在ubuntu中链接

    我正在尝试进入 opengl 编程 但无法编译我的第一个非常非常简单的程序 链接过程每次都会失败 我发现这个答案 https stackoverflow com questions 859501 learning opengl in ubu
  • 如何在 Visual Studio 2012 中安装 GLUT 和 OpenGL?

    我今天刚安装了Visual Studio 2012 我想知道如何在该平台上安装GLUT和OpenGL OpenGL 应该已经存在 可能会缺少 Freeglut GLUT GLUT 现在已经非常过时并且没有得到积极的支持 所以你当然应该使用
  • 不明确的 OpenGL 默认相机位置

    在我的Opengl程序中 在我应用透视投影矩阵之前 每当我绘制一些对象时 我都会在世界坐标系的原点处绘制它 但是几乎所有Opengl教程都指出相机 我的投影视图 位于原点朝向正 z 轴 这取决于您稍后如何处理投影矩阵中的 z 值 但是如果这
  • 重新创建窗口而不破坏上下文

    这个问题是关于使用 OpenGL 的图形应用程序 当时我正在使用 GLFW 框架 但我考虑更改它 我的目标是让用户 尽可能 在全屏模式和窗口模式之间不断切换 此过程应该花费不到一秒的时间 并且可以在运行时发生 例如 看看游戏 我的世界 用户
  • DirectX::SpriteFont/SpriteBatch 阻止 3D 场景绘制

    我使用时遇到问题DirectX SpriteFont DirectX SpriteBatch 来自 DirectXTK 与此处讨论的问题完全相同 使用 SpriteFont 类绘制文本时出现问题 https stackoverflow co
  • java绕中心旋转矩形

    我想围绕其中心点旋转一个矩形 它应该保留在应该绘制的位置并在该空间中旋转 这是我的代码 AffineTransform transform new AffineTransform transform rotate Math toRadian
  • WPF 3D - 在复杂几何体上映射渐变画笔

    我想问是否有人知道如何在 WPF 3D 中的复杂对象上映射渐变画笔 结果应该类似于 matlab 中的 3D 图像 例如 3D 函数 假设您有一些想要可视化的 3 维数据 并且想要通过颜色区分某些级别的值 给定一个 GradientBrus
  • OpenGL 使用着色器将 NV12 转换为 RGB24

    我尝试编写一个应用程序来在 OpenGL 中显示 YUV 图像 我使用此代码片段在 C 中成功将 Y UV 转换为 RGB source https blog csdn net subfate article details 4730514
  • 3D 空间中两个盒子之间的交集

    我想为我的图形引擎实现一个碰撞检测系统 我不知道这是否是常见的方法 但我的想法是将任何实体对象 如网格或相机 绑定在 3D 盒子内 这会给我比球体更准确的结果 这个盒子由八个顶点定义 x0 min vertices x off parsin
  • 在 3D 场景中实现“抓取”相机平移工具

    在我的场景中 我有想要 抓取 的地形 然后在移动光标时让相机平移 其高度 视图向量 视野等全部保持不变 因此 最初的 抓取 点将是世界空间中的工作点 我希望在拖动时该点保留在光标下方 我当前的解决方案是获取前一个和当前的屏幕点 取消投影它们
  • OpenGL:VAO 和 VBO 对于大型多边形渲染任务是否实用?

    如果您想渲染一次在视锥体中包含数千个多边形的大型景观 并且用户的视点不断变化 那么使用 VAO 或 VBO 是否实用 我的意思是 每次玩家的位置或摄像机旋转发生变化时 您都必须重新计算顶点数据 以便正确剔除不再可见的任何顶点或场景 以保持良
  • Windows下使用GLEW使用OpenGL扩展

    我一直在 Windows 上使用 OpenGL 扩展痛苦的方式 https stackoverflow com questions 14413 using opengl extensions on windows GLEW 是更简单的方法吗

随机推荐

  • 启用文本过滤器时如何引用列表项的原始位置?

    当我使用编辑文本来过滤项目时 列表位置变得一团糟 并且项目不再调用正确的意图 任何帮助表示赞赏 lv setOnItemClickListener new OnItemClickListener public void onItemClic
  • 多个 Rails 应用程序 nginx 乘客配置

    I used this设置服务器指南 这是我的配置 nginx nginx conf user www data worker processes auto pid run nginx pid events worker connectio
  • 了解 Spring @Autowired 的用法

    我正在阅读 spring 3 0 x 参考文档来理解 Spring Autowired 注释 3 9 2 Autowired 和 Inject 我无法理解下面的例子 我们是否需要在 XML 中做一些事情才能使其正常工作 实施例1 publi
  • 监听JTextArea的粘贴事件

    我想在用户将文本粘贴到我的 JTextArea 中时调用一个函数 将文本粘贴到 JTextArea 时是否会生成任何事件 我可以使用哪个侦听器来触发此事件的函数 一种可能的解决方案 我希望有人有更好的解决方案 是替换按键绑定Action负责
  • Angular 2 Aot 错误:致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足

    在运行 Angular 2 AOT rollup 时我遇到了上述问题 lt Last few GCs gt 144518 ms Mark sweep 1317 0 1404 4 gt 1317 0 1404 4 MB 1522 9 0 0
  • 如何让一个进程等待多个资源?

    我目前正在使用 SimPy 来建模和模拟服务器进程 我希望该进程根据从何处接收此消息来执行不同的操作 SimPy 文档展示了如何等待多个事件 例如 yield event1 事件2 不过 我目前正在尝试等待多个商店提供资源 场景如下 服务器
  • 将测试结果添加到 VSTS 中的测试运行(测试用例)

    我需要将测试结果添加到 VSTS 中的测试用例中 我是 VSTS 新手 不确定我的代码出了什么问题 var ur new Uri https myaccount visualstudio com VssCredentials cr new
  • Vaadin 7 在组件之间触发自定义事件

    我想创建自定义事件并在视图的某些部分触发它们 以便更新 删除 刷新视图的其他部分 我尝试过扩展 Component Event 和 Component Listener 但它不起作用 我认为事件和侦听器必须仅限于同一组件实例 Vaadin
  • Cython 条件编译基于通过“setuptools”给出的外部值

    我尝试从 Cython pyx 文件有条件地生成 C 代码 我在 Cython 文档中找到了我可以使用的DEF定义一个值和IF根据定义的值有条件地生成代码 但是如何从setup py via Extension from setuptool
  • 如何从离子应用程序中删除闪屏

    直接启动应用程序 不会出现闪屏和白屏 我正在开发一个离子应用程序 我需要在加载应用程序之前删除应用程序启动时显示的启动屏幕 我不想要任何闪屏 需要删除完整的闪屏不知道该怎么做 让我展示一下我的应用程序的机器设置 Your system in
  • Breeze.Server.WebAPI2“无法满足包依赖性约束”

    我正在尝试添加Breeze Server WebAPI2Nuget 包到 Visual Studio Community 2015 RC 当我单击安装时 我收到 无法满足包依赖性约束 列出的依赖项是 Microsoft AspNet Web
  • 重启Android Studio

    如何重启Android Studio来克服Gradle项目刷新失败错误 无法在以下位置找到哈希字符串 Google Inc Google APIs 23 的目标 C Users Admin AppData Local Android sdk
  • html表格的浮动水平滚动条

    我有一个非常高的 html 表格 网页必须垂直滚动才能到达表格底部的滚动条 当用户滚动页面并且表格可见时 如果我可以将表格的水平滚动条浮动在浏览器窗口底部 那就太好了 这样的事可以做吗 这是 jsFiddle 的情况示例 http jsfi
  • 缩短/避免 if 语句中级联空检查的方法

    我有这个条件 if Model Bids null Model Bids Items null Model Bids Items Count gt 0 问题是 我认为这很丑陋 我可以编写一个封装此函数的函数 但我想知道是否还有其他东西可以帮
  • 如何使用 Google Apps 脚本从 Google 电子表格单元格获取 url?

    我有一个从 Excel 复制的谷歌电子表格 我对此有一些问题 这是我的文件https docs google com spreadsheets d 1Ok phu5OXtvKHLj3MLa7N3WV2qBdMWRz8dLHnTqjHrc e
  • Crystal Reports 图像在 Web 查看器中不可见

    我在继承的应用程序 NET 1 1 中有一些 Crystal Reports V10 该应用程序部署在四个 相同 环境中 在其中三种环境中 它们运行良好 在第四种情况下 图表图形在 Web 查看器中不可见 如果导出报告 它们是可见的 IT
  • 验证日期时间选择器的输入

    如何在 XML 视图中为 datetimepicker 注册验证错误回调 以及如何因无效日期输入而触发此事件 The 日期时间选择器控件是一个带有弹出日期选择器的输入框 用户可以直接在输入中键入或使用所选日期来选择日期 我可以向日期时间值添
  • “Microsoft.ACE.OLEDB.12.0”64x Sql Server 和 86x Office?

    错误 OLE DB 提供程序 Microsoft ACE OLEDB 12 0 不能用于分布式查询 因为该提供程序配置为在单线程单元模式下运行 我看到的答案是 64 位 Sql Server 和 32 位 Office 之间存在冲突 有没有
  • 如何在android中将单个字符串转换为JsonArray?

    我需要将 String 转换为 JsonArray 但我不知道如何转换 我是 Android 开发新手 我想在 MySQL 数据库中插入通话记录详细信息 所以 从 android 端我得到一个字符串 但我不知道如何将该字符串转换为 Json
  • 如何旋转这个 openGl 代码

    在这段代码中 我尝试绘制简单的奥林匹克环并旋转它 下面的工作正常 但我无法旋转环 帮助我解决这个问题 void myReshape int width int height glViewport 0 0 width height glMat