Backport to Glide 2

Most games were using Glide 2, meaning there is more wrappers for Glide
2 available than for Glide 3. In particular, it seems there is no open
source Glide 3 wrapper.

FossilOrigin-Name: 16bb6bc399e5b4db4f5117199f6b534231c42072555575b70f40795651805648
This commit is contained in:
Jonathan Schleifer 2023-01-10 01:12:33 +00:00
parent c322610fe4
commit 4ea8389306
10 changed files with 255 additions and 543 deletions

View file

@ -15,7 +15,7 @@
#import <ObjFW/ObjFW.h>
#import "O3DEngine.h"
#import "O3DGlideRenderer.h"
@interface TestsAppDelegate: OFObject <OFApplicationDelegate>
@end
@ -25,49 +25,31 @@ OF_APPLICATION_DELEGATE(TestsAppDelegate)
@implementation TestsAppDelegate
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
Class <O3DRenderer> renderer =
[O3DEngine availableRenderers].firstObject;
O3DEngine *engine =
[[[O3DEngine alloc] initWithRenderer: renderer
options: nil] autorelease];
O3DGlideRenderer *renderer = [[[O3DGlideRenderer alloc]
initWithResolution: OFMakeSize(640, 480)
bitsPerPixel: 16
refreshRate: 60
options: nil] autorelease];
[OFStdOut writeFormat: @"Available resolutions: %@\n",
engine.renderer.availableResolutions];
O3DResolution resolution = [OFPair
pairWithFirstObject: [OFValue valueWithSize: OFMakeSize(800, 600)]
secondObject: [OFNumber numberWithFloat: 60]];
[engine.renderer createWithResolution: resolution];
O3DVertex values1[] = {
const O3DVertex outerTriangle[] = {
{ -1, -1 },
{ 0, 1 },
{ 1, -1 }
};
O3DVertex values2[] = {
const O3DVertex innerTriangle[] = {
{ -0.5, 0.5 },
{ 0, -0.5 },
{ 0.5, 0.5 }
};
OFData *vertices1 = [OFData
dataWithItemsNoCopy: values1
count: sizeof(values1) / sizeof(*values2)
itemSize: sizeof(O3DVertex)
freeWhenDone: false];
OFData *vertices2 = [OFData
dataWithItemsNoCopy: values2
count: sizeof(values2) / sizeof(*values2)
itemSize: sizeof(O3DVertex)
freeWhenDone: false];
OFDate *startDate = [OFDate date];
while (-startDate.timeIntervalSinceNow < 5) {
[engine.renderer beginFrame];
[engine.renderer setColor: [OFColor yellow]];
[engine.renderer drawVertices: vertices1];
[engine.renderer setColor: [OFColor red]];
[engine.renderer drawVertices: vertices2];
[engine.renderer endFrame];
[renderer beginFrame];
[renderer setColor: [OFColor yellow]];
[renderer drawPolygonVertices: outerTriangle count: 3];
[renderer setColor: [OFColor red]];
[renderer drawPolygonVertices: innerTriangle count: 3];
[renderer endFrame];
}
[OFApplication terminate];