C# Game Programming: for Serious Game Creation

Total Page:16

File Type:pdf, Size:1020Kb

C# Game Programming: for Serious Game Creation C# Game Programming: For Serious Game Creation Daniel Schuller Course Technology PTR A part of Cengage Learning Australia • Brazil • Japan • Korea • Mexico • Singapore • Spain • United Kingdom • United States C# Game Programming: † 2011 Course Technology, a part of Cengage Learning. For Serious Game Creation ALL RIGHTS RESERVED. No part of this work covered by the copyright herein may Daniel Schuller be reproduced, transmitted, stored, or used in any form or by any means graphic, electronic, or mechanical, including but not limited to photocopying, recording, Publisher and General Manager, scanning, digitizing, taping, Web distribution, information networks, or Course Technology PTR: information storage and retrieval systems, except as permitted under Section 107 Stacy L. Hiquet or 108 of the 1976 United States Copyright Act, without the prior written Associate Director of Marketing: permission of the publisher. Sarah Panella Manager of Editorial Services: For product information and technology assistance, contact us at Heather Talbot Cengage Learning Customer & Sales Support, 1-800-354-9706 Marketing Manager: Jordan For permission to use material from this text or product, Castellani submit all requests online at cengage.com/permissions Further permissions questions can be emailed to Senior Acquisitions Editor: Emi [email protected] Smith Project Editor: Jenny Davidson Visual Studio 2010 Express Web installer is a registered trademark of Technical Reviewer: James E. Perry Microsoft Corporation in the United States and other countries. Interior Layout Tech: MPS Limited, TortoiseSVN is a trademark of CollabNet, Inc. sfxr was created by A Macmillan Company DrPetter. NUnit is a copyright of NUnit.org. Bitmap Font Creator is a Cover Designer: Mike Tanamachi copyright of andreas jo¨ nsson. CD-ROM Producer Brandon Penticuff All other trademarks are the property of their respective owners. Indexer: Broccoli Indexing Services All images † Cengage Learning unless otherwise noted. Proofreader: Sara Gullion Library of Congress Control Number: 2010922097 ISBN-13: 978-1-4354-5556-6 ISBN-10: 1-4354-5556-8 eISBN-10:1-4354-5623-8 Course Technology, a part of Cengage Learning 20 Channel Center Street Boston, MA 02210 USA Cengage Learning is a leading provider of customized learning solutions with office locations around the globe, including Singapore, the United Kingdom, Australia, Mexico, Brazil, and Japan. Locate your local office at: international.cengage.com/region Cengage Learning products are represented in Canada by Nelson Education, Ltd. For your lifelong learning solutions, visit courseptr.com Visit our corporate website at cengage.com Printed in the United States of America 1234567121110 This book is dedicated to Garfield Schuller and Stanley Hyde. Acknowledgments Many thanks to everyone who has helped with this book and to everyone who developed the wonderful libraries and tools that it uses. Thanks to Jenny Davidson, the book’s project editor, for all her help making my writing clearer and ensuring that everything was finished in time. Thanks to my technical editor, Jim Perry, who caught my many coding mistakes and provided valuable suggestions and advice. I would also like to thank my family and coworkers for their support and helpful input. iv About the Author Daniel Schuller is a British-born computer game developer who has worked and lived in the United States, Singapore, Japan, and is currently working in the United Kingdom. He has released games on the PC as well as the Xbox 360 and PlayStation 3. Schuller has developed games for Sony, Ubisoft, Naughty Dog, RedBull, and Wizards of the Coast, and maintains a game development website at http://www.godpatterns.com. In addition to developing computer games, Schuller also studies Japanese and is interested in Artificial Intelligence, cognition, and the use of games in education. v Contents Introduction . ................................................xii PART I BACKGROUND ........................................1 Chapter 1 The History of C# . ....................................3 C# Basics ...................................................... 3 Versions of C# ...............................................5 C#2.0....................................................5 Generics ............................................... 5 Anonymous Delegates ................................... 9 C#3.0...................................................10 LINQ ................................................. 10 Lambda Functions...................................... 12 Object Initializers ...................................... 12 Collection Initializers ................................... 12 Local Variable Type Inference and Anonymous Types. ....... 13 C#4.0...................................................14 Dynamic Objects ....................................... 14 Optional Parameters and Named Arguments............... 15 Summary .................................................... 17 Chapter 2 Introducing OpenGL ..................................19 Architecture of OpenGL........................................ 21 Vertices—The Building Blocks of 3D Graphics ...................21 vi Contents vii The Pipeline ................................................22 OpenGL Is Changing........................................... 24 OpenGL ES .................................................25 WebGL . ...................................................25 OpenGL and the Graphics Card.................................. 25 Shaders—Programs on the Graphics Card .......................27 The Tao Framework ........................................... 28 Summary .................................................... 30 Chapter 3 Modern Methods .....................................31 Pragmatic Programming ....................................... 31 Game Programming Traps....................................32 KISS .......................................................32 DRY.......................................................32 C++.....................................................36 Source Control..............................................37 Using Source Control ......................................39 Unit Testing ................................................40 Test Driven Development ..................................44 Unit Testing in C# .........................................44 Summary .................................................... 44 PART II IMPLEMENTATION . .................................47 Chapter 4 Setup ...............................................49 Introducing Visual Studio Express—A Free IDE for C# . ............ 49 A Quick Hello World. ........................................50 Visual Studio Express Tips ....................................53 Automatic Refactoring and Code Generation .................53 Renaming............................................. 54 Creating Functions ..................................... 56 Separating Chunks of Code . ............................ 57 Shortcuts . .............................................60 Subversion, an Easy Source Control Solution ...................... 60 Where to Get It .............................................60 Installation.................................................60 Creating the Repository ......................................60 Adding to the Repository ....................................64 History . ...................................................67 viii Contents Extending Hello World.......................................68 Tao......................................................... 69 NUnit ....................................................... 71 Using NUnit with a Project ...................................72 Running Tests ..............................................75 An Example Project. .........................................76 Summary .................................................... 80 Chapter 5 The Game Loop and Graphics...........................81 How Do Games Work? ......................................... 81 A Closer Look at the Game Loop ..............................82 Implementing a Fast Game Loop in C# . ......................... 82 Adding High-Precision Timing . ..............................89 Graphics ..................................................... 91 Full Screen Mode. .........................................94 Rendering .................................................96 Clearing the Background...................................96 Vertices. ...............................................98 Triangles. ...............................................99 Coloring and Spinning the Triangle . .......................101 Summary ................................................... 103 Chapter 6 Game Structure . ..................................105 The Basic Pattern of a Game Object ............................. 105 Handling Game State ......................................... 106 Game State Demo ............................................ 112 Setting the Scene with Projections .............................. 114 Form Size and OpenGL Viewport Size .........................114 Aspect Ratio...............................................116 The Projection Matrix.......................................117 2D Graphics ...............................................117 Sprites...................................................... 120 Positioning the Sprite.......................................124 Managing Textures with DevIl . .............................125 Textured Sprites
Recommended publications
  • A Topology-Adaptive Overlay Framework. (Under the Direction of Dr
    ABSTRACT KANDEKAR, KUNAL. TAO: A Topology-Adaptive Overlay Framework. (Under the direction of Dr. Khaled Harfoush.) Large-scale distributed systems rely on constructing overlay networks in which nodes communicate with each other through intermediate overlay neighbors. Organizing nodes in the overlay while preserving its congruence with the underlying IP topology (the underlay) is important to reduce the communication cost between nodes. In this thesis, we study the state- of-the-art approaches to match the overlay and underlay topologies and pinpoint their limitations in Internet-like setups. We also introduce a new Topology-Adaptive Overlay organization framework, TAO, which is scalable, accurate and lightweight. As opposed to earlier approaches, TAO compiles information resulting from traceroute packets to a small number of landmarks, and clusters nodes based on (1) the number of shared hops on their path towards the landmarks, and (2) their proximity to the landmarks. TAO is also highly flexible and can complement all existing structured and unstructured distributed systems. Our experimental results, based on actual Internet data, reveal that with only five landmarks, TAO identifies the closest node to any node with 85% - 90% accuracy and returns nodes that on average are within 1 millisecond from the closest node if the latter is missed. As a result, TAO overlays enjoy very low stretch (between 1.15 and 1.25). Our results also indicate that shortest-path routing on TAO overlays result in shorter end-to-end delays than direct underlay delays in 8-10% of the overlay paths. TAO: A Topology-Adaptive Overlay Framework by Kunal Kandekar A thesis submitted to the Graduate Faculty of North Carolina State University in partial fulfillment of the requirements for the Degree of Master of Science Computer Science Raleigh 2006 Approved by: _______________________________ _______________________________ Dr.
    [Show full text]
  • Ironpython in Action
    IronPytho IN ACTION Michael J. Foord Christian Muirhead FOREWORD BY JIM HUGUNIN MANNING IronPython in Action Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> IronPython in Action MICHAEL J. FOORD CHRISTIAN MUIRHEAD MANNING Greenwich (74° w. long.) Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. Sound View Court 3B fax: (609) 877-8256 Greenwich, CT 06830 email: [email protected] ©2009 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15% recycled and processed without the use of elemental chlorine.
    [Show full text]
  • Nuclear Data
    CNIC-00810 CNDC-0013 INDC(CPR)-031/L NUCLEAR DATA No. 10 (1993) China Nuclear Information Center Chinese Nuclear Data Center Atomic Energy Press CNIC-00810 CNDC-0013 INDC(CPR)-031/L COMMUNICATION OF NUCLEAR DATA PROGRESS No. 10 (1993) Chinese Nuclear Data Center China Nuclear Information Centre Atomic Energy Press Beijing, December 1993 EDITORIAL BOARD Editor-in-Chief Liu Tingjin Zhuang Youxiang Member Cai Chonghai Cai Dunjiu Chen Zhenpeng Huang Houkun Liu Tingjin Ma Gonggui Shen Qingbiao Tang Guoyou Tang Hongqing Wang Yansen Wang Yaoqing Zhang Jingshang Zhang Xianqing Zhuang Youxiang Editorial Department Li Manli Sun Naihong Li Shuzhen EDITORIAL NOTE This is the tenth issue of Communication of Nuclear Data Progress (CNDP), in which the achievements in nuclear data field since the last year in China are carried. It includes the measurements of 54Fe(d,a), 56Fe(d,2n), 58Ni(d,a), (d,an), (d,x)57Ni, 182~ 184W(d,2n), 186W(d,p), (d,2n) and S8Ni(n,a) reactions; theoretical calculations on n+160 and ,97Au, 10B(n,n) and (n,n') reac­ tions, channel theory of fission with diffusive dynamics; the evaluations of in­ termediate energy nuclear data for 56Fe, 63Cu, 65Cu(p,n) monitor reactions, and of 180Hf, ,8lTa(n,2n) reactions, revision on recommended data of 235U and 238U for CENDL-2; fission barrier parameters sublibrary, a PC software of EXFOR compilation, some reports on atomic and molecular data and covariance research. We hope that our readers and colleagues will not spare their comments, in order to improve the publication. Please write to Drs.
    [Show full text]
  • What Is Dot Net (Pdf)
    What is .NET 1 outline • .NET framework • CLR • CLI, CIL, MSIL • ADO.NET, ASP.NET, MVC, webforms, razor • Mono • .NET Core • .NET Standard 2 .NET framework • Software framework • First released early 2000’s • “consists of the common language runtime (CLR) and the .NET Framework class library (FCL)” [1] • Provides a “code execution environment” • Various runtime hosts for the CLR [2] • ASP.NET (via ISAPI filter) • Executable • Can write your own 3 CLR • The virtual machine that manages execution of .NET programs [3] • Memory • Threads • Code trust • Type checking • pinvoke • JIT compiling to execute on current hardware 4 .NET Framework and CLR • Framework and CLR are different [4] • Can technically run different framework versions within the same CLR version • E.g. Windows XP only supports framework up to 4.0, running 4.5 apps is theoretically possible (with some hex editing of the binary) as long as calls are restricted to methods that were the same in 4.0 (e.g., no extensions) [5] • Recent framework updates have been focused on • Optimization (including SIMD) • Accessories (stylus, touch screen, etc) • Security 5 CLR, CLI, CIL • Common Language Infrastructure (CLI) • Open standard that describes executable code [6] • Common Intermediate Language (CIL) [7] • Aka “IL” • Formerly MSIL • Object oriented assembly language • Platform independent • A compiler takes source code and • Converts it to CIL using the CLI specification • Adds any required metadata (type information, etc) • This is an “assembly” 6 CLR, CLI, CIL • Visual Studio tooling
    [Show full text]
  • The Atomic Simulation Environment - a Python Library for Working with Atoms
    Downloaded from orbit.dtu.dk on: Sep 28, 2021 The Atomic Simulation Environment - A Python library for working with atoms Larsen, Ask Hjorth; Mortensen, Jens Jørgen; Blomqvist, Jakob; Castelli, Ivano Eligio; Christensen, Rune; Dulak, Marcin; Friis, Jesper; Groves, Michael; Hammer, Bjørk; Hargus, Cory Total number of authors: 34 Published in: Journal of Physics: Condensed Matter Link to article, DOI: 10.1088/1361-648X/aa680e Publication date: 2017 Document Version Peer reviewed version Link back to DTU Orbit Citation (APA): Larsen, A. H., Mortensen, J. J., Blomqvist, J., Castelli, I. E., Christensen, R., Dulak, M., Friis, J., Groves, M., Hammer, B., Hargus, C., Hermes, E., C. Jennings, P., Jensen, P. B., Kermode, J., Kitchin, J., Kolsbjerg, E., Kubal, J., Kaasbjerg, K., Lysgaard, S., ... Jacobsen, K. W. (2017). The Atomic Simulation Environment - A Python library for working with atoms. Journal of Physics: Condensed Matter, 29, [273002]. https://doi.org/10.1088/1361-648X/aa680e General rights Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. Users may download and print one copy of any publication from the public portal for the purpose of private study or research. You may not further distribute the material or use it for any profit-making activity or commercial gain You may freely distribute the URL identifying the publication in the public portal If you believe that this document breaches copyright please contact us providing details, and we will remove access to the work immediately and investigate your claim.
    [Show full text]
  • Eagle: Tcl Implementation in C
    Eagle: Tcl Implementation in C# Joe Mistachkin <[email protected]> 1. Abstract Eagle [1], Extensible Adaptable Generalized Logic Engine, is an implementation of the Tcl [2] scripting language for the Microsoft Common Language Runtime (CLR) [3]. It is designed to be a universal scripting solution for any CLR based language, and is written completely in C# [4]. Su- perficially, it is similar to Jacl [5], but it was written from scratch based on the design and imple- mentation of Tcl 8.4 [6]. It provides most of the functionality of the Tcl 8.4 interpreter while bor- rowing selected features from Tcl 8.5 [7] and the upcoming Tcl 8.6 [8] in addition to adding en- tirely new features. This paper explains how Eagle adds value to both Tcl/Tk and CLR-based applications and how it differs from other “dynamic languages” hosted by the CLR and its cousin, the Microsoft Dy- namic Language Runtime (DLR) [9]. It then describes how to use, integrate with, and extend Ea- gle effectively. It also covers some important implementation details and the overall design phi- losophy behind them. 2. Introduction This paper presents Eagle, which is an open-source [10] implementation of Tcl for the Microsoft CLR written entirely in C#. The goal of this project was to create a dynamic scripting language that could be used to automate any host application running on the CLR. 3. Rationale and Motivation Tcl makes it relatively easy to script applications written in C [11] and/or C++ [12] and so can also script applications written in many other languages (e.g.
    [Show full text]
  • Extending Actionability in Better Code Hub Suggesting Move Module Refactorings
    Extending Actionability in Better Code Hub Suggesting move module refactorings Teodor Kurtev [email protected] July 14, 2017, 48 pages Supervisor: dr. Ana-Maria Oprescu, [email protected] Host supervisor: dr. Magiel Bruntink, [email protected] Host organisation: Software Improvement Group, Inc., https://www.sig.eu Universiteit van Amsterdam Faculteit der Natuurwetenschappen, Wiskunde en Informatica Master Software Engineering http://www.software-engineering-amsterdam.nl Abstract Undoubtedly, refactoring can have a positive effect on overall system quality, and it is a critical part of the work cycle of every developer. However, finding the right refactoring opportunities can be a difficult task. This is particularly the case for refactorings related to overall system structure. One of the best ways to address such issues is to apply the move module refactoring. In this thesis, we propose a way of automatically detecting refactoring opportunities for move module refactorings in the context of the C# language using a Compiler as a Service (CaaS) - Roslyn. We evaluate our approach using seven open source projects and an expert panel. The results from these validation experiments showed our approach as promising - the group of experts found more than half of the proposed refactorings useful. 1 Contents Abstract 1 Acronyms 5 1 Introduction 6 1.1 Problem analysis....................................... 6 1.2 Research questions...................................... 7 1.3 Solution outline........................................ 8 1.4 Definitions........................................... 8 1.5 Outline ............................................ 8 2 Background 10 2.1 Refactoring .......................................... 10 2.2 Code smells.......................................... 10 2.3 Move module refactoring................................... 11 2.4 Better Code Hub (BCH) and the SIG Maintainability Model .............
    [Show full text]
  • Normas-ML: Supporting the Modeling of Normative Multi-Agent
    49 2019 8 4 ADCAIJ: Advances in Distributed Computing and Artificial Intelligence Journal. Vol. 8 N. 4 (2019), 49-81 ADCAIJ: Advances in Distributed Computing and Artificial Intelligence Journal Regular Issue, Vol. 8 N. 4 (2019), 49-81 eISSN: 2255-2863 DOI: http://dx.doi.org/10.14201/ADCAIJ2019844981 NorMAS-ML: Supporting the Modeling of Normative Multi-agent Systems Emmanuel Sávio Silva Freirea, Mariela Inés Cortésb, Robert Marinho da Rocha Júniorb, Enyo José Tavares Gonçalvesc, and Gustavo Augusto Campos de Limab aTeaching Department, Federal Institute of Ceará, Morada Nova, Brazil bComputer Science Department, State University of Ceará, Fortaleza, Brazil cComputer Science Department, Federal University of Ceará, Quixadá, Brazil [email protected], [email protected], [email protected], [email protected], [email protected] KEYWORD ABSTRACT Normative Multi- Context: A normative multi-agent system (NMAS) is composed of agents that their be- agent System; havior is regulated by norms. The modeling of those elements (agents and norms) togeth- Norms; Modeling er at design time can be a good way for a complete understanding of their structure and Language; behavior. Multi-agent system modeling language (MAS-ML) supports the representation NorMAS-ML of NMAS entities, but the support for concepts related to norms is somewhat limited. MAS-ML is founded in taming agents and objects (TAO) framework and has a support tool called the MAS-ML tool. Goal: The present work aims to present a UML-based modeling language called normative multi-agent system (NorMAS-ML) able to model the MAS main entities along with the static normative elements.
    [Show full text]
  • Multithreaded Rendering for Cross-Platform 3D Visualization Based on Vulkan Api
    The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Volume XLIV-4/W1-2020, 2020 3rd BIM/GIS Integration Workshop and 15th 3D GeoInfo Conference, 7–11 September 2020, London, UK MULTITHREADED RENDERING FOR CROSS-PLATFORM 3D VISUALIZATION BASED ON VULKAN API C. Ioannidis, A.-M. Boutsi* Laboratory of Photogrammetry, School of Rural and Surveying Engineering, National Technical University of Athens, Greece; [email protected], [email protected] KEY WORDS: Computer graphics, 3D visualization, graphics API, Vulkan, geospatial data ABSTRACT: The visualization of large-sized 3D geospatial models is a graphics intensive task. With ever increasing size and complexity, more computing resources are needed to attain speed and visual quality. Exploiting the parallelism and the multi-core performance of the Graphics Processing Unit (GPU), a cross-platform 3D viewer is developed based on the Vulkan API and modern C++. The proposed prototype aims at the visualization of a textured 3D mesh of the Cultural Heritage by enabling a multi-threaded rendering pipeline. The rendering workload is distributed across many CPU threads by recording multiple command buffers in parallel and coordinating the host and the GPU rendering phases. To ensure efficient multi-threading behavior and a minimum overhead, synchronization primitives are exploiting for ordering the execution of queues and command buffers. Furthermore, push-constants are used to send uniform data to the GPU and render passes to adapt to the tile-based rendering of the mobile devices. The proposed methodology and technical solution are designed, implemented and tested for Windows, MacOS and Android on Vulkan-compatible GPU hardware by compiling the same codebase.
    [Show full text]
  • 3.2.1 Opengl Context and Window Creation
    OpenGL Context and Window Stefano Markidis and Sergio Rivas-Gomez Four Key-points • OpenGL does not include window creation and management. You will need separate libraries to manage the windows • As window creation and management, we suggest that you use either GLUT/FreeGLUT or GLFW • GLUT/FreeGLUT are easy to use and likely already installed on your systems, GLFW is the future but you need to install it • When using OpenGL, it is better to install and use a library for OpenGL function pointer management. We will install and use GLAD OpenGL Initialization … Without OpenGL! • We initialize OpenGL, by creating an OpenGL context, which is essentially a state machine that stores all data related to the rendering of our application. • Problem: Creating a window and an OpenGL context is not part of the OpenGL specification. • The reason that this is done differently on different platforms and OpenGL can’t guarantee portability. • There are libraries, not included in OpenGL, out there that supports window creation and management. Typical Program Flow with Window Management Libraries Every application making use of real-time graphics will have a program flow that comes down to this render loop Suggested Libraries to Create/Manage Windows • GLUT: OpenGL Utility Toolkit (GLUT) library • Easiest to use • Already installed on lab machines and likely on your laptop. • Not designed for core-profile OpenGL • Free-GLUT newly developed version of GLUT, supported and new license type • GLFW: • Little more difficult to use than GLUT • Most modern and best integration with modern OpenGL. • It doesn’t support deprecated immediate-mode legacy OpenGL Create a Window with GLUT / Free GLUT • We first initialize window with glutInit, glutInitWindowSize(), glutCreateWindow() • We tell GLUT what is the function responsible for the rendering and define it.
    [Show full text]
  • Die C# Schnittstelle Der Referenzattributgrammatik- Gesteuerten Graphersetzungsbibliothek RACR: Übersicht, Anwendung Und Implementierung
    Fakultät Informatik - Institut für Software- und Multimediatechnik TECHNICAL REPORTS ISSN 1430-211X TUD-FI15-06 Oktober 2015 Daniel Langner, Christoff Bürger Fakultät Informatik, Lehrstuhl Softwaretechnologie Die C# Schnittstelle der Referenzattributgrammatik- gesteuerten Graphersetzungsbibliothek RACR: Übersicht, Anwendung und Implementierung Technische Universität Dresden Fakultät Informatik Institut für Software- und Multimediatechnik Lehrstuhl Softwaretechnologie 01062 Dresden Germany Technische Universität Dresden Institut für Software- und Multimediatechnik Lehrstuhl Softwaretechnologie Entwicklerhandbuch Die C# Schnittstelle der Referenzattributgrammatik-gesteuerten Graphersetzungsbibliothek RACR Übersicht, Anwendung und Implementierung Daniel Langner [email protected] Editor: Christoff Bürger RACR .NET Entwicklerhandbuch RACR Distribution und Homepage: https://github.com/christoff-buerger/racr Danksagung Ich danke Llewellyn ‘Leppie‘ Pritchard, dem Autor der Scheme-VM IronScheme, ohne welche diese Arbeit niemals hätte entstehen können. Er hatte immer ein offenes Ohr und war stets bereit, sein breites CLI-Wissen zu teilen und bei Problemen mit IronScheme weiterzuhelfen. Vorwort Dieses Entwicklerhandbuch beruht auf dem Großem Beleg von Daniel Langner, welcher unter dem Titel RAG-gesteuerte Graphersetzung in der objektorientierten Programmierung am 17. November 2015 beim Lehrstuhl Softwaretechnologie, Institut für Software- und Multimediatechnik, Technische Universität Dresden, eingereicht wurde. Der Große Beleg wurde von Dipl.-inf. Christoff Bürger und Dipl.-Inf. Johannes Mey, unter Aufsicht von Prof. Dr. rer. nat. habil. Uwe Aßmann, betreut und mit sehr gut abgeschlossen. Inhaltsverzeichnis 1. Einleitung 13 1.1. Aufgabenstellung . 14 1.2. Struktur der Arbeit . 14 2. Konzeptionelle und technische Voraussetzungen 15 2.1. Überblick der RAG-gesteuerten Graphersetzung . 15 2.2. Scheme . 16 2.3. Die RACR Scheme-Bibliothek . 17 2.4. Das .NET-Framework und die Common Language Infrastructure . 18 2.5. IronScheme .
    [Show full text]
  • Opengl! ! Where It fits! ! What It Contains! ! How You Work with It
    11(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL! ! where it fits! ! what it contains! ! how you work with it 11(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL! ! The cross-platform graphics library!! ! Open = Open specification! ! Runs everywhere - Linux, Mac, Windows...! ! Any language! ! Three branches:! ! OpenGL - ordinary computers! OpenGL ES - phones and tablets! WebGL - web browsers 12(40)12(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL and Related APIs application program GLUT! GLX,! SDL! X, OSX, WGL,! GLFW GLU Win32 etc CGL,! NSOpenGL GL drivers, hardware 13(40)13(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL parts:! ! GL = Graphics Library (core lib)! ! GLU = GL Utilities (no longer supported)! ! GLX, WGL, CGL, NSOpenGL = System dependent libraries! ! ! ! GLUT = GL Utility Toolkit (optional)! ! FreeGLUT, MicroGlut! ! Also note: SDL (Simple Directmedia Layer)! ! GLFW (similar to GLUT) 14(40)14(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL versions OpenGL 1-2: Old OpenGL. Avoid! Big leap here! OpenGL 3.2 and up: Modern OpenGL! Latest version 4.5. Even hotter (but harder): Vulkan (released 2016) 15(40)15(40) Information Coding / Computer Graphics, ISY, LiTH Simple OpenGL example! ! A single triangle! ! • upload to the GPU once! ! • draw any time you want! ! but also! ! • upload shader to specify transformations and colors 16(40)16(40) Information Coding / Computer Graphics, ISY, LiTH Vital concepts! ! • VAO, VBO! ! • Vertex shader! ! • Fragment shader 17(40)17(40)
    [Show full text]