* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Our Graphics Environment
Scala (programming language) wikipedia , lookup
Stream processing wikipedia , lookup
Library (computing) wikipedia , lookup
Abstraction (computer science) wikipedia , lookup
Functional programming wikipedia , lookup
Reactive programming wikipedia , lookup
Programming language wikipedia , lookup
Java (programming language) wikipedia , lookup
Multi-core processor wikipedia , lookup
Object-oriented programming wikipedia , lookup
Structured programming wikipedia , lookup
Go (programming language) wikipedia , lookup
Interpreter (computing) wikipedia , lookup
Java ConcurrentMap wikipedia , lookup
Comparison of OpenGL and Direct3D wikipedia , lookup
Java performance wikipedia , lookup
Mesa (computer graphics) wikipedia , lookup
C Sharp (programming language) wikipedia , lookup
General-purpose computing on graphics processing units wikipedia , lookup
Our Graphics Environment Hardware • CPU • Modern CPUs are multicore processors that support programs that can run at the same time as other programs • The level of parallelism (as enabled by the number of CPU cores) is relatively low • GPU—massively parallel, set up for high-speed graphics • All modern high-performance graphics systems use massively parallel GPUs • How do the CPU and GPU communicate? Slow data bus Programing on the CPU • We will use Java • High-level language • Interpreter translates our Java code to object code (check) • Java Run-time Environment (JRE) takes the object code and translates it to CPU readable machine language • Need a graphic Programming on the GPU • We can only get to the GPU through the CPU • We will write programs in Java that run on the CPU that launch programs that run on the GPU • We will call the CPU the ‘client side’ and the GPU the ‘server side’ • Our client-side Java programs will contain character strings that represent relatively short OpenGL Shading Language (GLSL) programs • The GLSL programs will be compiled and linked by built-in OpenGL tools on the client side but… • They will run on the GPU (the server-side) • Wait! Don’t run away screaming… Our programming environment • Client side • Java (language), Eclipse (IDE), JOGL (Java wrapper for OpenGL libraries) • Server side • GLSL (the OpenGL shading languages) • Can you do this programming in other environments? Absolutely • C and C++ are the most common client side programming languages (I use C++) • HLSL (high-level shading language) is used extensively by programmers preferring to use the Microsoft DirectX graphics library over OpenGL What if you don’t want to do graphics? • GPUs can be used for general purpose programming (like a CPU) • Some languages that are good for this include • CUDA (NVIDIA) • OpenCL (from the folks who gave you OpenGL) • Probably many others