标签: objective-c++

如何将glDrawElements与GL_UNSIGNED_INT一起用于索引?

我正在尝试在iPad上绘制超过65536个顶点的3d对象,但无法弄清楚我做错了什么.我使用GL_UNSIGNED_SHORT的原始模型运行得很好,但现在使用GL_UNSIGNED_INT,我无法使用glDrawElements命令显示任何内容.这就像渲染器完全忽略了我的glDrawElements线.我正在引用的渲染循环部分如下:

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

glVertexPointer(3, GL_FLOAT, sizeof(assemblyObj->vertices[0])*6, &assemblyObj->vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(assemblyObj->vertices[0])*6, &assemblyObj->vertices[0]);

for (int i = 0; i < assemblyObj->numObjects; i++)
{
     glDrawElements(GL_TRIANGLES, assemblyObj->partList[i].faceArray.size(), GL_UNSIGNED_INT, &assemblyObj->partList[i].faceArray[0]);
}

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
Run Code Online (Sandbox Code Playgroud)

顶点定义为:

vector<float> vertices;
Run Code Online (Sandbox Code Playgroud)

每个faceArray定义为:

vector<UInt32> faceArray;
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何建议都阻止了我的几何图形的绘制?

opengl-es objective-c objective-c++ ipad

7
推荐指数
1
解决办法
6446
查看次数

用于iOS开发的Objective-C++

是否有可能将Objective-C++用于iOS应用程序(iPhone,iPad,iPod touch)开发?

互联网上有任何示例和源代码吗?

iphone objective-c++ ipad ios

7
推荐指数
1
解决办法
1万
查看次数

建议将C++类用于Objective-C类,尽量减少使用Objective-C++?

我正在混合Objective-C和C++.但是我想尽量减少使用Objective-C++.因为它在Objective-C和C++中都有某种限制.

目前,我正在使用它.

// A.h, Objective-C
#import "B.h"
@interface A
{
    B* b;
}
@end

// B.h, Objective-C++
@interface B
{
    void* c;
}

// C.h, C++
class C
{
};
Run Code Online (Sandbox Code Playgroud)

我想包括C.hB.h,但如果我做到了,B.h不能被导入A.h.所以我必须将变量保留cvoid*类型.这不是一个大问题,因为我可以使用的成员CB.m文件中自由活动.但我总是要施展它.这感觉不清楚.所以如果是的话,我想用更好的方法.

c++ objective-c mixing objective-c++

7
推荐指数
1
解决办法
5743
查看次数

Objective-C++中支持多少C++

我想制作一款iPhone应用,但我打算用C++制作这个框架.是否可以在Objective-C++中使用模板之类的东西.我想真的问题是,我可以使用提升吗?

iphone cocoa boost objective-c objective-c++

6
推荐指数
2
解决办法
1632
查看次数

我可以在编译和链接中将C++主函数和类与Objective-C和/或C例程分开吗?

我有一个小的C++应用程序,我导入了Objective-C类.它可用作Objective-C++文件,.mm,但任何包含可能最终包含某些Objective-C标头的标头的C++文件必须重命名为.mm扩展名以获取正确的GCC驱动程序.

有没有办法为Objective-C类编写一个纯粹的C++包装器,或者我可以以某种方式将Objective-C对象分开并将它们分开链接?也许即使Objective-C类成为一个小型库,我可以在编译时静态重新链接?

问题是这个代码是跨平台的,并且在通常不使用Objective-C(即不是Mac)的系统上编译更加困难.即使预处理器命令限制在Windows或Linux上实现Objective-C代码,原始代码仍然具有.mm扩展名,GCC仍将代码视为Objective-C++.

c++ compiler-construction objective-c objective-c++

6
推荐指数
1
解决办法
1952
查看次数

Objective-C稳定ABI

我主要是一个C++人.由于C++缺少官方ABI,我总是使用类似COM的方法来支持多个编译器的组件设计.

最近我遇到的问题是Objective-C是否会取代类似COM的方法.显然,对于Objective-C来说,替换它需要一个稳定的ABI,因此我想知道Objective-C是否存在稳定的ABI(在所有主要操作系统[OSX,GNU/Linux,Windows]上)以及如何容易它将使用Objective-C(++)作为由不同编译器创建的组件之间的"粘合剂".

编辑: 正如Nikolai Ruhe所指出的,对COM的简短描述可能会有所帮助.COM本质上是一个"二进制标准",它允许混合不同编译器(以及各种语言)的二进制文件.COM的工具是接口,它定义了方法(映射到C++的虚函数).组件实现至少一个接口并作为DLL分发.它们可以位于系统的任何位置(位置在注册表中指定),并且可以由任何COM客户端通过它们实现的接口的ID加载.

c++ objective-c objective-c++

6
推荐指数
1
解决办法
917
查看次数

std :: mutex锁定函数和std :: lock_guard <std :: mutex>之间的区别?

基本上,标题是不言自明的.我用以下方式使用它:

  • 代码是Objective-C++.
  • Objective-C类对不同的目的函数进行并发调用.
  • 我使用std::mutexlockunlock std::vector<T>跨越整个班级的编辑选项,如C++的std容器不是线程安全的.

multithreading mutex objective-c++ c++11

6
推荐指数
1
解决办法
5755
查看次数

如何跨设备分享已保存的游戏?

我在我的iOS游戏中实现了GameKit,包括保存的游戏功能.

这是我如何保存和加载游戏的示例:

MobSvcSavedGameData.h

#ifndef MOBSVC_SAVEDGAMEDATA_H
#define MOBSVC_SAVEDGAMEDATA_H

#import <Foundation/Foundation.h>

@interface MobSvcSavedGameData : NSObject <NSCoding>

@property (readwrite, retain) NSString *data;

+(instancetype)sharedGameData;
-(void)reset;

@end


#endif /* MOBSVC_SAVEDGAMEDATA_H */
Run Code Online (Sandbox Code Playgroud)

MobSvcSavedGameData.m

#import "MobSvcSavedGameData.h"
#import <Foundation/Foundation.h>

@interface MobSvcSavedGameData () <NSObject, NSCoding>

@end

@implementation MobSvcSavedGameData

#pragma mark MobSvcSavedGameData implementation

static NSString * const sgDataKey = @"data";

+ (instancetype)sharedGameData {
    static id sharedInstance = nil;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] init];
    });

    return sharedInstance;
}

- (void)reset
{
    self.data = nil;
}

- …
Run Code Online (Sandbox Code Playgroud)

objective-c objective-c++ gamekit game-center icloud

6
推荐指数
1
解决办法
249
查看次数

自 iOS 13.4 起不再显示购买对话框

iOS 13.4 开始,当行...

[[SKPaymentQueue defaultQueue] addPayment:payment]; 
Run Code Online (Sandbox Code Playgroud)

……被处决。

iOS 13.4之前,用户确认购买时会弹出一个对话框,但现在什么都没有。有谁知道可能导致此问题的原因?

笔记:

  • 这是一款基于 libSDL 和 gles 3.0 的全屏游戏。
  • 虽然 99% 的代码库是 C++,但应用内购买是用 Objective C++ 进行的
  • 它在 iOS 13.4 之前运行

objective-c objective-c++ in-app-purchase ios skpaymenttransaction

6
推荐指数
2
解决办法
1430
查看次数

禁用 c++ 模块时使用“@import”,请考虑使用 -fmodules 和 -fcxx-modules

当我尝试使用 Cocoapods 将 AdMob 集成到 Objective C++ 项目中时,我就想到了这个问题。

禁用 c++ 模块时使用“@import”,请考虑使用 -fmodules 和 -fcxx-modules

这是什么错误以及如何修复它?

objective-c++ admob

6
推荐指数
1
解决办法
3192
查看次数