Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Side by Side Diff: core/cross/gl/renderer_gl.h

Issue 210005: Rewrote full-screen support on Windows. O3D now always creates its own... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | core/cross/gl/renderer_gl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2009, Google Inc. 2 * Copyright 2009, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 static RendererGL* CreateDefault(ServiceLocator* service_locator); 58 static RendererGL* CreateDefault(ServiceLocator* service_locator);
59 virtual ~RendererGL(); 59 virtual ~RendererGL();
60 60
61 // Initialises the renderer for use, claiming hardware resources. 61 // Initialises the renderer for use, claiming hardware resources.
62 virtual InitStatus InitPlatformSpecific(const DisplayWindow& display, 62 virtual InitStatus InitPlatformSpecific(const DisplayWindow& display,
63 bool off_screen); 63 bool off_screen);
64 64
65 // Released all hardware resources. 65 // Released all hardware resources.
66 virtual void Destroy(); 66 virtual void Destroy();
67 67
68 // Turns fullscreen display on or off. 68 // Overridden from Renderer.
69 // Parameters: 69 virtual bool GoFullscreen(const DisplayWindow& display,
70 // fullscreen: true for fullscreen, false for in-browser display 70 int mode_id);
71 // display: a platform-specific display identifier 71
72 // mode_id: a mode returned by GetDisplayModes, for fullscreen use. 72 // Overridden from Renderer.
73 // (Ignored in non-fullscreen mode.) 73 virtual bool CancelFullscreen(const DisplayWindow& display,
74 // Returns true on success, false on failure. 74 int width, int height);
75 virtual bool SetFullscreen(bool fullscreen,
76 const DisplayWindow& display,
77 int mode_id);
78 75
79 // Tells whether we're currently displayed fullscreen or not. 76 // Tells whether we're currently displayed fullscreen or not.
80 virtual bool fullscreen() const { 77 virtual bool fullscreen() const {
81 return fullscreen_; 78 return fullscreen_;
82 } 79 }
83 80
84 // Resizes the viewport in OpenGL. 81 // Resizes the viewport in OpenGL.
85 virtual void Resize(int width, int height); 82 virtual void Resize(int width, int height);
86 83
87 // Creates a StreamBank, returning a platform specific implementation class. 84 // Creates a StreamBank, returning a platform specific implementation class.
(...skipping 23 matching lines...) Expand all
111 virtual RenderDepthStencilSurface::Ref CreateDepthStencilSurface( 108 virtual RenderDepthStencilSurface::Ref CreateDepthStencilSurface(
112 int width, 109 int width,
113 int height); 110 int height);
114 111
115 // Overridden from Renderer. 112 // Overridden from Renderer.
116 virtual const int* GetRGBAUByteNSwizzleTable(); 113 virtual const int* GetRGBAUByteNSwizzleTable();
117 114
118 // Makes this renderer active on the current thread if it is not active 115 // Makes this renderer active on the current thread if it is not active
119 // already. 116 // already.
120 void MakeCurrentLazy() { 117 void MakeCurrentLazy() {
121 if (!IsCurrent()) MakeCurrent(); 118 if (!IsCurrent())
119 MakeCurrent();
122 } 120 }
123 121
124 // Returns whether or not this renderer is active on the current thread. 122 // Returns whether or not this renderer is active on the current thread.
125 // In the Mac case, also requires the correct GL context to be active.
126 // Don't worry, the "get" calls are el cheapo. 123 // Don't worry, the "get" calls are el cheapo.
127 bool IsCurrent() { 124 bool IsCurrent() {
128 #ifdef OS_MACOSX 125 #if defined(OS_MACOSX)
129 if ((mac_agl_context_ != NULL) && 126 if ((mac_agl_context_ != NULL) &&
130 (mac_agl_context_ != aglGetCurrentContext())) { 127 (mac_agl_context_ == aglGetCurrentContext())) {
131 return false; 128 return true;
132 } else if ((mac_cgl_context_ != NULL) && 129 } else if ((mac_cgl_context_ != NULL) &&
133 (mac_cgl_context_ != CGLGetCurrentContext())) { 130 (mac_cgl_context_ == CGLGetCurrentContext())) {
134 return false; 131 return true;
135 } 132 }
133 #elif defined(OS_WIN)
134 if ((gl_context_ != NULL) &&
135 (gl_context_ == wglGetCurrentContext())) {
136 return true;
137 }
138 #elif defined(OS_LINUX)
139 if ((context_ != NULL) &&
140 (context_ == glXGetCurrentContext())) {
141 return true;
142 }
143 #else
144 Error: must port RendererGL::IsCurrent() to your platform.
136 #endif 145 #endif
137 return this == current_renderer_; 146 return false;
138 } 147 }
139 148
140 // Makes this renderer active on the current thread. 149 // Makes this renderer active on the current thread.
141 bool MakeCurrent(); 150 bool MakeCurrent();
142 151
143 inline CGcontext cg_context() const { return cg_context_; } 152 inline CGcontext cg_context() const { return cg_context_; }
144 inline CGprofile cg_vertex_profile() const { return cg_vertex_profile_; } 153 inline CGprofile cg_vertex_profile() const { return cg_vertex_profile_; }
145 inline CGprofile cg_fragment_profile() const { return cg_fragment_profile_; } 154 inline CGprofile cg_fragment_profile() const { return cg_fragment_profile_; }
146 155
147 protected: 156 protected:
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 InitStatus InitCommonGL(); 223 InitStatus InitCommonGL();
215 224
216 // Platform-independent GL destruction 225 // Platform-independent GL destruction
217 void DestroyCommonGL(); 226 void DestroyCommonGL();
218 227
219 // Updates the helper constant used to remap D3D clip coordinates to GL ones. 228 // Updates the helper constant used to remap D3D clip coordinates to GL ones.
220 void UpdateHelperConstant(float width, float height); 229 void UpdateHelperConstant(float width, float height);
221 230
222 ServiceDependency<SemanticManager> semantic_manager_; 231 ServiceDependency<SemanticManager> semantic_manager_;
223 232
224 // Current renderer, tracking which renderer has last called wglMakeCurrent
225 // (or equivalent on other platforms).
226 // NOTE: this should really be thread-local, but since we don't handle
227 // multiple threads currently, this is enough.
228 static RendererGL *current_renderer_;
229
230 // Indicates we're rendering fullscreen rather than in the plugin region. 233 // Indicates we're rendering fullscreen rather than in the plugin region.
231 bool fullscreen_; 234 bool fullscreen_;
232 235
233 236
234 #ifdef OS_WIN 237 #ifdef OS_WIN
235 // Handle to the GL device. 238 // Handle to the GL device.
236 HWND window_; 239 HWND window_;
237 HDC device_context_; 240 HDC device_context_;
238 HGLRC gl_context_; 241 HGLRC gl_context_;
239 #endif 242 #endif
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 float polygon_offset_factor_; 318 float polygon_offset_factor_;
316 float polygon_offset_bias_; 319 float polygon_offset_bias_;
317 320
318 // Sets the stencils states for either front, back or both facing polys. 321 // Sets the stencils states for either front, back or both facing polys.
319 void SetStencilStates(GLenum face, const StencilStates& stencil_states); 322 void SetStencilStates(GLenum face, const StencilStates& stencil_states);
320 }; 323 };
321 324
322 } // namespace o3d 325 } // namespace o3d
323 326
324 #endif // O3D_CORE_CROSS_GL_RENDERER_GL_H_ 327 #endif // O3D_CORE_CROSS_GL_RENDERER_GL_H_
OLDNEW
« no previous file with comments | « no previous file | core/cross/gl/renderer_gl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698