mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:32:44 +00:00 
			
		
		
		
	LibGL: Implement glColorPointer
This commit is contained in:
		
							parent
							
								
									07b9cba6e6
								
							
						
					
					
						commit
						f52f40925c
					
				
					 5 changed files with 33 additions and 0 deletions
				
			
		|  | @ -358,6 +358,7 @@ GLAPI void glDepthMask(GLboolean flag); | ||||||
| GLAPI void glEnableClientState(GLenum cap); | GLAPI void glEnableClientState(GLenum cap); | ||||||
| GLAPI void glDisableClientState(GLenum cap); | GLAPI void glDisableClientState(GLenum cap); | ||||||
| GLAPI void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void* pointer); | GLAPI void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void* pointer); | ||||||
|  | GLAPI void glColorPointer(GLint size, GLenum type, GLsizei stride, const void* pointer); | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -67,6 +67,7 @@ public: | ||||||
|     virtual void gl_enable_client_state(GLenum cap) = 0; |     virtual void gl_enable_client_state(GLenum cap) = 0; | ||||||
|     virtual void gl_disable_client_state(GLenum cap) = 0; |     virtual void gl_disable_client_state(GLenum cap) = 0; | ||||||
|     virtual void gl_vertex_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) = 0; |     virtual void gl_vertex_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) = 0; | ||||||
|  |     virtual void gl_color_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) = 0; | ||||||
| 
 | 
 | ||||||
|     virtual void present() = 0; |     virtual void present() = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -13,3 +13,8 @@ void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void* pointe | ||||||
| { | { | ||||||
|     g_gl_context->gl_vertex_pointer(size, type, stride, pointer); |     g_gl_context->gl_vertex_pointer(size, type, stride, pointer); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void glColorPointer(GLint size, GLenum type, GLsizei stride, const void* pointer) | ||||||
|  | { | ||||||
|  |     g_gl_context->gl_color_pointer(size, type, stride, pointer); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -1461,6 +1461,30 @@ void SoftwareGLContext::gl_vertex_pointer(GLint size, GLenum type, GLsizei strid | ||||||
|     m_client_vertex_pointer.pointer = pointer; |     m_client_vertex_pointer.pointer = pointer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void SoftwareGLContext::gl_color_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) | ||||||
|  | { | ||||||
|  |     RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION); | ||||||
|  | 
 | ||||||
|  |     RETURN_WITH_ERROR_IF(!(size == 3 || size == 4), GL_INVALID_VALUE); | ||||||
|  | 
 | ||||||
|  |     RETURN_WITH_ERROR_IF(!(type == GL_BYTE | ||||||
|  |                              || type == GL_UNSIGNED_BYTE | ||||||
|  |                              || type == GL_SHORT | ||||||
|  |                              || type == GL_UNSIGNED_SHORT | ||||||
|  |                              || type == GL_INT | ||||||
|  |                              || type == GL_UNSIGNED_INT | ||||||
|  |                              || type == GL_FLOAT | ||||||
|  |                              || type == GL_DOUBLE), | ||||||
|  |         GL_INVALID_ENUM); | ||||||
|  | 
 | ||||||
|  |     RETURN_WITH_ERROR_IF(stride < 0, GL_INVALID_VALUE); | ||||||
|  | 
 | ||||||
|  |     m_client_color_pointer.size = size; | ||||||
|  |     m_client_color_pointer.type = type; | ||||||
|  |     m_client_color_pointer.stride = stride; | ||||||
|  |     m_client_color_pointer.pointer = pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void SoftwareGLContext::present() | void SoftwareGLContext::present() | ||||||
| { | { | ||||||
|     m_rasterizer.blit_to(*m_frontbuffer); |     m_rasterizer.blit_to(*m_frontbuffer); | ||||||
|  |  | ||||||
|  | @ -77,6 +77,7 @@ public: | ||||||
|     virtual void gl_enable_client_state(GLenum cap) override; |     virtual void gl_enable_client_state(GLenum cap) override; | ||||||
|     virtual void gl_disable_client_state(GLenum cap) override; |     virtual void gl_disable_client_state(GLenum cap) override; | ||||||
|     virtual void gl_vertex_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) override; |     virtual void gl_vertex_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) override; | ||||||
|  |     virtual void gl_color_pointer(GLint size, GLenum type, GLsizei stride, const void* pointer) override; | ||||||
| 
 | 
 | ||||||
|     virtual void present() override; |     virtual void present() override; | ||||||
| 
 | 
 | ||||||
|  | @ -233,6 +234,7 @@ private: | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     VertexAttribPointer m_client_vertex_pointer; |     VertexAttribPointer m_client_vertex_pointer; | ||||||
|  |     VertexAttribPointer m_client_color_pointer; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Stephan Unverwerth
						Stephan Unverwerth