소스 검색

LibWeb/WebGL2: Implement createSampler

Luke Wilde 7 달 전
부모
커밋
8a9d1de1cf

+ 1 - 0
Libraries/LibWeb/Forward.h

@@ -842,6 +842,7 @@ class WebGLObject;
 class WebGLProgram;
 class WebGLProgram;
 class WebGLRenderbuffer;
 class WebGLRenderbuffer;
 class WebGLRenderingContext;
 class WebGLRenderingContext;
+class WebGLSampler;
 class WebGLShader;
 class WebGLShader;
 class WebGLShaderPrecisionFormat;
 class WebGLShaderPrecisionFormat;
 class WebGLTexture;
 class WebGLTexture;

+ 2 - 1
Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl

@@ -7,6 +7,7 @@
 #import <WebGL/WebGLRenderingContextBase.idl>
 #import <WebGL/WebGLRenderingContextBase.idl>
 #import <WebGL/WebGLRenderingContextOverloads.idl>
 #import <WebGL/WebGLRenderingContextOverloads.idl>
 #import <WebGL/WebGLQuery.idl>
 #import <WebGL/WebGLQuery.idl>
+#import <WebGL/WebGLSampler.idl>
 #import <WebGL/WebGLSync.idl>
 #import <WebGL/WebGLSync.idl>
 #import <WebGL/WebGLTransformFeedback.idl>
 #import <WebGL/WebGLTransformFeedback.idl>
 #import <WebGL/WebGLTexture.idl>
 #import <WebGL/WebGLTexture.idl>
@@ -386,7 +387,7 @@ interface mixin WebGL2RenderingContextBase {
     [FIXME] any getQueryParameter(WebGLQuery query, GLenum pname);
     [FIXME] any getQueryParameter(WebGLQuery query, GLenum pname);
 
 
     // Sampler Objects
     // Sampler Objects
-    [FIXME] WebGLSampler createSampler();
+    WebGLSampler createSampler();
     [FIXME] undefined deleteSampler(WebGLSampler? sampler);
     [FIXME] undefined deleteSampler(WebGLSampler? sampler);
     [FIXME] GLboolean isSampler(WebGLSampler? sampler); // [WebGLHandlesContextLoss]
     [FIXME] GLboolean isSampler(WebGLSampler? sampler); // [WebGLHandlesContextLoss]
     [FIXME] undefined bindSampler(GLuint unit, WebGLSampler? sampler);
     [FIXME] undefined bindSampler(GLuint unit, WebGLSampler? sampler);

+ 1 - 0
Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp

@@ -113,6 +113,7 @@ static bool is_platform_object(Type const& type)
         "WebGLProgram"sv,
         "WebGLProgram"sv,
         "WebGLRenderbuffer"sv,
         "WebGLRenderbuffer"sv,
         "WebGLRenderingContext"sv,
         "WebGLRenderingContext"sv,
+        "WebGLSampler"sv,
         "WebGLShader"sv,
         "WebGLShader"sv,
         "WebGLShaderPrecisionFormat"sv,
         "WebGLShaderPrecisionFormat"sv,
         "WebGLTexture"sv,
         "WebGLTexture"sv,

+ 10 - 0
Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp

@@ -354,6 +354,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
 #include <LibWeb/WebGL/WebGLProgram.h>
 #include <LibWeb/WebGL/WebGLProgram.h>
 #include <LibWeb/WebGL/WebGLRenderbuffer.h>
 #include <LibWeb/WebGL/WebGLRenderbuffer.h>
 #include <LibWeb/WebGL/@class_name@.h>
 #include <LibWeb/WebGL/@class_name@.h>
+#include <LibWeb/WebGL/WebGLSampler.h>
 #include <LibWeb/WebGL/WebGLShader.h>
 #include <LibWeb/WebGL/WebGLShader.h>
 #include <LibWeb/WebGL/WebGLShaderPrecisionFormat.h>
 #include <LibWeb/WebGL/WebGLShaderPrecisionFormat.h>
 #include <LibWeb/WebGL/WebGLTexture.h>
 #include <LibWeb/WebGL/WebGLTexture.h>
@@ -508,6 +509,15 @@ public:
             continue;
             continue;
         }
         }
 
 
+        if (function.name == "createSampler"sv) {
+            function_impl_generator.append(R"~~~(
+    GLuint handle = 0;
+    glGenSamplers(1, &handle);
+    return WebGLSampler::create(m_realm, handle);
+)~~~");
+            continue;
+        }
+
         if (function.name == "shaderSource"sv) {
         if (function.name == "shaderSource"sv) {
             function_impl_generator.append(R"~~~(
             function_impl_generator.append(R"~~~(
     Vector<GLchar*> strings;
     Vector<GLchar*> strings;