想学习如何在 Objective-C 中使用 OpenGL,但不知道从哪里开始。帮助? [关闭]

2024-01-10

我对 OpenGL 的经验为零,对 Objective-C 的经验也很少,但我对 C++ 的了解相当不错。我应该查看哪些资源来开始学习如何在 Objective-C 中使用 OpenGL?

我在某个地方读到,从 NSOpenGLView 开始是一个好的开始。


老实说,您可能不需要了解太多 Objective-C 来处理 OpenGL,只需了解 C。OpenGL 是基于 C 的,因此您不需要学习任何新的语言来处理它。仅当您计划使用 Cocoa 构建界面时,Objective-C 知识才是真正必要的。即便如此,如果您有扎实的 C/C++ 背景,学习该语言也不难。

我强烈推荐这本书iPhone 3D 编程 http://oreilly.com/catalog/9780596804831?cmp=il-orm-ofps-iphone3d马特的第一个资源就是基于此。尽管您询问的是桌面 OpenGL,并且本书涵盖了 OpenGL ES,但这两个 API 之间有很多共享。这本书很好地从简单的概念和基础知识开始,然后扩展到更高级的主题,例如环境映射和自定义着色器。作者使用 C++ 作为本书的基础语言,因此即使是他展示的最复杂的代码,您也应该熟悉。 OpenGL ES 实际上是 OpenGL 的子集,因此几乎所有内容都可以转换到桌面。

在桌面 Cocoa 应用程序中,您有两种呈现 OpenGL 内容的方式:NSOpenGLView 和 CAOpenGLLayer。前者是一个较旧的 NSView 子类,您可以自定义它以将渲染代码放入其中。后者是一个核心动画 CALayer,也充当 OpenGL 渲染目标,但它为您在如何将其他项目叠加在 OpenGL 内容之上提供了更多的灵活性。为 OpenGL 渲染设置显示不会花费太多精力,您的大部分时间都花在 OpenGL 代码上。

您可能想要拆解一些 Apple 的示例应用程序,例如GLSL 展示品 http://developer.apple.com/library/mac/#samplecode/GLSLShowpiece/Introduction/Intro.html#//apple_ref/doc/uid/DTS10003935, 可可OpenGL http://developer.apple.com/library/mac/#samplecode/CocoaGL/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004501, GL 必需品 http://developer.apple.com/library/mac/#samplecode/GLEssentials/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010104, and 立方体拼图 http://developer.apple.com/library/mac/#samplecode/CubePuzzle/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000521,以及他们在开发人员中心的其他 OpenGL 示例。

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

想学习如何在 Objective-C 中使用 OpenGL,但不知道从哪里开始。帮助? [关闭] 的相关文章

  • 并排显示图像的一半 - OpenGL

    我为两个图像创建了两个纹理 现在我想在opengl中按图像2的左侧部分 完整的图像1 图像2的右侧部分的顺序显示该纹理 我已经做了如下 Image1 显示在 opengl 屏幕的中央 但屏幕的左右部分不正确 应分别显示 image2 的左侧
  • GCD 和线程

    我想了解一些有关 GCD 和线程的知识 我的视图控制器中有一个 for 循环 它要求我的模型执行一些异步网络请求 因此 如果循环运行 5 次 模型将发出 5 个网络请求 考虑到我正在使用 NSURLConnection 的 sendAsyn
  • 如何通过填充 NSDictionary 以 JSON 格式发送 UIImage

    我正在尝试使用 JSON 将数据发送到服务器 我可以使用我的对象和关键参数创建 NSDictionary 但我想发送我的图片 图片是UIImage NSDictionary mainJSON NSDictionary dictionaryW
  • UITableViewCell 的 viewDidAppear

    我通常使用viewDidAppear方法在视图完成出现后在视图上执行一些 UI 操作 我在各种情况下使用了此方法 它非常有用 但是 我需要在视图上进行一些 UI 更改UITableViewCell当它完成出现后 SDK中是否有任何可用的方法
  • iPad 2 检测

    由于我没有 iPad 2 因此我需要知道调用 UIDevice currentDevice model 时它返回什么 我以为它只返回 iPad 但看来我错了 有人可以告诉我吗 Thanks 检查是否有带摄像头的 iPad BOOL isIP
  • 从视频生成缩略图 - ios7

    我用这个作为参考 从视频 URL 或 iPhone SDK 中的数据获取缩略图 https stackoverflow com a 6027285 1145339 该方法使用 MPMoviePlayerController 类而不是 AVF
  • 我如何在 viewDidLoad 中执行 UIView animateWithDuration ? IOS 7

    我在 viewDidAppear 中尝试这个 但我有一秒钟的延迟 我能做什么 在 viewDidLoad 中工作 void viewDidAppear BOOL animated fullRotation CABasicAnimation
  • &(与符号)和 && 或 | 之间的区别(管道)和||在 Objective-C 中?

    我想知道Objective C是否关心我是写 还是 我相信一个与号 会或应该导致如果左侧已经为假 则右侧将不会被评估 这适用于 Objective C 吗 Yes 这些运算符在 C 和 Objective C 中的功能相同 就像在 C 中一
  • 方向改变时重新定位控件

    我知道自动布局可用于在方向改变时使尺寸和位置保持一致 当方向改变时 是否可以完全改变布局 例如 请查看下面的纵向模式下简单登录屏幕的线框 现在 如果我旋转设备 我想完全重新定位控件 这种事情可以用自动布局来完成吗 如果没有 我该怎么办 谢谢
  • 在完成块中保留循环

    在我的课堂上 我创建了这个方法 void refreshDatasourceWithSuccess CreateDataSourceSuccessBlock successBlock failure CreateDataSourceFail
  • 如何使用 iOS 可达性

    我正在开发一个使用网络的 iPhone 应用程序 iPhone 通过 HTTP 请求与我的服务器通信 并且应该可以在 WiFi 和 3G 上运行 我目前使用NSURLConnection initWithRequest向我的服务器发送异步请
  • 如何在 UITableView 中显示零行的表格

    我正在动态地将内容加载到 UITableView 中 如果有数据 表格需要显示数据 如果没有数据 表格应显示普通页面 但在我的应用程序中 表格显示带有两条分隔线的普通页面 我需要删除此分隔线并显示纯白色页面 请建议 任何帮助 将不胜感激 如
  • 为什么在尝试编译此代码时会收到错误“错误:未知类型名称'虚拟'”?

    Code struct IRenderingEngine virtual void Initialize int width int height 0 virtual void Render const 0 virtual void Upd
  • 处理过时的 NSURL 书签的正确方法是什么?

    从安全范围的书签解析 NSURL 时 如果用户已重命名或移动该文件或文件夹 则该书签将过时 苹果的文档对于陈旧性有这样的描述 isStale 返回时 如果是 则书签数据已过时 你的应用程序应该 使用返回的 URL 创建一个新书签并用它代替
  • 如何将 NSSecureCoding 与 id 对象一起使用

    我正在创建一个链接列表并使用容器对对象 下一个和上一个属性进行分组 就像基金会收藏一样 我希望它能够实现NSSecureCoding 这是声明 interface ListContainer NSObject
  • 如何检测 UISwipeGestureRecognizer 的结束?

    来自苹果文档 滑动是一种离散手势 因此每个手势仅发送一次关联的操作消息 void touchesEnded NSSet touches withEvent UIEvent event 当我使用 UISwipeGestureRecognize
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • 如何使用 NSUserDefaults 正确工作(检索值)

    我的代码中有一个简单的方法 如下所示 BOOL isFirstTimeLogin NSString t gName NSString stringWithFormat NSUserDefaults standardUserDefaults
  • 核心数据:尝试查找实体中属性的最小日期

    我正在尝试查找核心数据中特定属性中最旧的日期 我发现了核心数据编程指南中的示例 http developer apple com mac library documentation cocoa conceptual CoreData Art
  • CALayer边框奇怪问题

    我正在向 CALayer 添加边框 但有一些奇怪的行为 在我应用的边框之后出现模糊边框 参见屏幕截图 这是我的代码 void configureLabel self hidden YES self textAlignment NSTextA

随机推荐