@@ -35,7 +35,8 @@ export class ApplicationDelegate extends NSObject {
35
35
window . title = "NativeScript for macOS" ;
36
36
window . delegate = this ;
37
37
window . styleMask = NSWindowStyleMask . Titled | NSWindowStyleMask . Closable |
38
- NSWindowStyleMask . Miniaturizable | NSWindowStyleMask . Resizable ;
38
+ NSWindowStyleMask . Miniaturizable | NSWindowStyleMask . Resizable |
39
+ NSWindowStyleMask . FullSizeContentView ;
39
40
40
41
window . titlebarAppearsTransparent = true ;
41
42
window . titleVisibility = NSWindowTitleVisibility . Hidden ;
@@ -79,11 +80,28 @@ export class Renderer extends NSObject {
79
80
/** @type {Uint32Array } */
80
81
viewportSize ;
81
82
83
+ /** @type {NSTextField } */
84
+ fpsCounter ;
85
+
86
+ updateIterval = 0.5 ;
87
+ accum = 0 ;
88
+ frames = 0 ;
89
+ timeLeft ;
90
+ previousTime ;
91
+
92
+ set fps ( value ) {
93
+ this . fpsCounter . stringValue = `${ Number ( value ) . toFixed ( 2 ) } FPS` ;
94
+ }
95
+
82
96
/**
83
97
* @param {MTKView } mtkView
98
+ * @param {NSTextField } fpsCounter
84
99
*/
85
- initWithMtkView ( mtkView ) {
100
+ initWithMtkView ( mtkView , fpsCounter ) {
86
101
this . device = mtkView . device ;
102
+ this . fpsCounter = fpsCounter ;
103
+
104
+ this . updateIterval = this . timeLeft = 0.3 ;
87
105
88
106
const error = new interop . Reference ( ) ;
89
107
const library = this . device . newLibraryWithSourceOptionsError (
@@ -251,19 +269,36 @@ export class ViewController extends NSViewController {
251
269
mtkView ;
252
270
253
271
loadView ( ) {
254
- this . mtkView = this . view = MTKView . alloc ( ) . initWithFrameDevice (
272
+ this . mtkView = MTKView . alloc ( ) . initWithFrameDevice (
255
273
{
256
274
origin : { x : 0 , y : 0 } ,
257
275
size : { width : 480 , height : 480 } ,
258
276
} ,
259
277
MTLCreateSystemDefaultDevice ( ) ,
260
278
) ;
279
+
280
+ this . view = NSView . alloc ( ) . initWithFrame ( this . mtkView . frame ) ;
281
+ this . view . addSubview ( this . mtkView ) ;
261
282
}
262
283
263
284
viewDidLoad ( ) {
264
285
super . viewDidLoad ( ) ;
265
286
266
- this . renderer = Renderer . new ( ) . initWithMtkView ( this . mtkView ) ;
287
+ const fpsCounter = NSTextField . new ( ) ;
288
+ fpsCounter . stringValue = "60 FPS" ;
289
+ fpsCounter . textColor = NSColor . whiteColor ;
290
+ fpsCounter . backgroundColor = NSColor . blackColor ;
291
+ fpsCounter . isBordered = false ;
292
+ fpsCounter . isEditable = false ;
293
+ fpsCounter . isSelectable = false ;
294
+ fpsCounter . frame = {
295
+ origin : { x : 10 , y : 10 } ,
296
+ size : { width : 60 , height : 20 } ,
297
+ } ;
298
+
299
+ this . view . addSubview ( fpsCounter ) ;
300
+
301
+ this . renderer = Renderer . new ( ) . initWithMtkView ( this . mtkView , fpsCounter ) ;
267
302
268
303
this . mtkView . delegate = this . renderer ;
269
304
}
0 commit comments