Obj3DEngine/src/O3DRenderer.h
Jonathan Schleifer 2b699a032e Change license to LGPL 3.0 only
FossilOrigin-Name: 6ca1c3b3060a245b3244e4b7f60d4fad266f52fc5802179e6ad8607c8b91a5d3
2024-08-17 00:39:45 +00:00

54 lines
1.4 KiB
Objective-C

/*
* Copyright (c) 2022, 2023 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3.0 only,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* version 3.0 for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* version 3.0 along with this program. If not, see
* <https://www.gnu.org/licenses/>.
*/
#import <ObjFW/ObjFW.h>
OF_ASSUME_NONNULL_BEGIN
typedef struct OF_BOXABLE {
OFVector3D position;
struct {
float r, g, b;
} color;
} O3DVertex;
@protocol O3DRenderer <OFObject>
@property (nonatomic) bool syncsToVerticalBlank;
+ (unsigned int)numAvailableDevices;
- (instancetype)initWithResolution: (OFSize)resolution
bitsPerPixel: (uint8_t)bitsPerPixel
refreshRate: (float)refreshRate
options: (nullable OFDictionary *)options;
- (void)beginFrame;
- (void)drawPolygonWithVertices: (const O3DVertex *)vertices
count: (size_t)count;
- (void)endFrame;
@end
#ifdef __cplusplus
extern "C" {
#endif
extern OFString *const O3DRendererDeviceIndex;
#ifdef __cplusplus
}
#endif
OF_ASSUME_NONNULL_END