NVlabs / nvdiffrast

Nvdiffrast - Modular Primitives for High-Performance Differentiable Rendering
Other
1.29k stars 139 forks source link

RuntimeError: OpenGL 4.4 or later is required #99

Closed sadexcavator closed 1 year ago

sadexcavator commented 1 year ago

Hello, i've got this problem when I running a nvdiffrec demo which uses your code base, my environment: ubuntu 16.04, cuda 11.3 , NVIDIA GeForce 3090ti, here is my error log:

Traceback (most recent call last): File "/home/wsr/workspace/nvdiffrec-main/train.py", line 557, in glctx = dr.RasterizeGLContext() File "/home/wsr/anaconda3/envs/dmodel/lib/python3.9/site-packages/nvdiffrast/torch/ops.py", line 160, in init self.cpp_wrapper = _get_plugin().RasterizeGLStateWrapper(output_db, mode == 'automatic', cuda_device_idx) RuntimeError: OpenGL 4.4 or later is required

could you please tell me how to fix this? (FYI i am not the root user) thanks for your time, appreciate it!

sadexcavator commented 1 year ago

By the way, i can make the code work by changing the call of RasterizeGLContext() to RasterizeCudaContext() as you said in your project page https://nvlabs.github.io/nvdiffrast/#rasterizing-with-cuda-vs-opengl-new. However I still want to know how to fix this by installing the OpenGL, does it need to be a root user to do this? because I wish to execute the rasterization operation using OpenGL like before, as you say 'For complex meshes and high resolutions OpenGL will most likely outperform the CUDA rasterizer'. Appreciate your help.

s-laine commented 1 year ago

You can find a number of already closed issues by searching for the same term, see here. The problem is most likely related to missing graphics drivers on the host operating system, and to install those you will need root access and a reboot.

Regarding performance, the CUDA rasterizer is probably as fast or faster than OpenGL until the mesh has tens of thousands of triangles, and the performance differences are fairly small even after that. Thus, if your rasterization step constitutes a small portion of overall iteration time, as is usually the case, it's unlikely that you would notice any difference in performance.

sadexcavator commented 1 year ago

thanks for your help