Программы на C++. Форум разработчиков
Anonymous
Segfault в glGetError() при работе с программным рендерером Mesa под Docker?
Сообщение
Anonymous » 09 апр 2024, 19:25
Мне не удалось запустить приложение OpenGL в контейнере Docker с Ubuntu. Ниже представлена минимальная копия, состоящая из нескольких файлов. Вот структура папок:
Код: Выделить всё
\CMakeLists.txt
\conanfile.txt
\Dockerfile
\entrypoint.sh
\main.cpp
CMakeLists.txt:
Код: Выделить всё
cmake_minimum_required(VERSION 3.8)
set(CMAKE_CXX_STANDARD 14)
project(glcrash)
file(GLOB_RECURSE COMPILABLE_FILES CONFIGURE_DEPENDS main.cpp)
find_package(GLEW REQUIRED)
find_package(glfw3 REQUIRED)
add_executable(${PROJECT_NAME} ${COMPILABLE_FILES})
target_link_libraries(${PROJECT_NAME}
GLEW::GLEW
glfw
)
conanfile.txt:
Код: Выделить всё
[requires]
glew/2.2.0
glfw/3.3.8
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout
Dockerfile:
Код: Выделить всё
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
build-essential \
cmake \
python3-pip \
pkg-config # for conan to install all packages
RUN pip3 install conan && conan profile detect
# BEGIN X-SERVER IN DOCKER CONTAINER --------------------------------
# Setup mesa drivers
#RUN add-apt-repository ppa:kisak/kisak-mesa # This will switch to the latest Mesa version available
RUN apt update && apt install -y \
libegl-mesa0 \
libegl1-mesa \
libegl1-mesa-dev \
libgl1-mesa-dev \
libglu1-mesa \
libglu1-mesa-dev \
libgl1-mesa-dri \
libgl1-mesa-glx \
libglapi-mesa \
libgles2-mesa \
libgles2-mesa-dev \
libglw1-mesa \
libglw1-mesa-dev \
libglx-mesa0 \
libosmesa6 \
libosmesa6-dev \
libfreetype6-dev \
mesa-utils \
xdotool \
mesa-common-dev \
libglib2.0-0
# Setup xvfb
RUN DEBIAN_FRONTEND=noninteractive \
apt install -y \
xvfb \
x11-xkb-utils \
xfonts-100dpi \
xfonts-75dpi \
xfonts-scalable \
xfonts-cyrillic \
xorg \
openbox \
xserver-xorg-core
# Setup our environment variables.
ENV XVFB_WHD="1920x1080x24"\
DISPLAY=":99" \
LIBGL_DEBUG="verbose" \
LIBGL_ALWAYS_SOFTWARE="1" \
MESA_DEBUG="1" \
GALLIUM_DRIVER="llvmpipe" \
LP_NO_RAST="false" \
LP_DEBUG="" \
LP_PERF="" \
LP_NUM_THREADS=""
# Copy our entrypoint into the container.
COPY ./entrypoint.sh /
RUN chmod +x /entrypoint.sh
# Set the default command.
ENTRYPOINT ["/entrypoint.sh"]
# END X-SERVER IN DOCKER CONTAINER --------------------------------
ADD * /opt/glcrash/
RUN cd /opt/glcrash && mkdir build && cd build \
&& conan install .. --build missing --output-folder=. -s build_type=Debug -c tools.system.package_manager:mode=install \
&& cmake .. -DCMAKE_TOOLCHAIN_FILE=build/Debug/generators/conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Debug \
&& cmake --build .
entrypoint.sh:
Код: Выделить всё
#!/bin/sh
if [ $# -eq 0 ]; then
echo "No command was given to run, exiting."
exit 1
else
# Start Xvfb
echo "Starting Xvfb."
Xvfb ${DISPLAY} -ac -screen 0 "$XVFB_WHD" -nolisten tcp &
Xvfb_pid="$!"
echo -n "Waiting for Xvfb to be ready... "
while ! xdpyinfo -display ${DISPLAY} > /dev/null 2>&1; do
sleep 0.1
done
echo "done."
"$@"
returnValue=$?
echo -n "Stopping Xvfb... "
while kill -n 0 $Xvfb_pid > /dev/null 2>&1; do
wait
done
echo "done."
#echo "Removing Xvfb temporary files."
rm -rf /tmp/.X*
exit $returnValue
fi
main.cpp
Код: Выделить всё
#include
#include
#include
int main(int argc, char** argv)
{
if (!glfwInit())
{
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78299170/segfault-in-glgeterror-when-running-with-mesa-software-renderer-under-docker[/url]
1712679955
Anonymous
Мне не удалось запустить приложение OpenGL в контейнере Docker с Ubuntu. Ниже представлена минимальная копия, состоящая из нескольких файлов. Вот структура папок: [code]\CMakeLists.txt \conanfile.txt \Dockerfile \entrypoint.sh \main.cpp [/code] CMakeLists.txt: [code]cmake_minimum_required(VERSION 3.8) set(CMAKE_CXX_STANDARD 14) project(glcrash) file(GLOB_RECURSE COMPILABLE_FILES CONFIGURE_DEPENDS main.cpp) find_package(GLEW REQUIRED) find_package(glfw3 REQUIRED) add_executable(${PROJECT_NAME} ${COMPILABLE_FILES}) target_link_libraries(${PROJECT_NAME} GLEW::GLEW glfw ) [/code] conanfile.txt: [code][requires] glew/2.2.0 glfw/3.3.8 [generators] CMakeDeps CMakeToolchain [layout] cmake_layout [/code] Dockerfile: [code]FROM ubuntu:20.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt update && apt install -y \ build-essential \ cmake \ python3-pip \ pkg-config # for conan to install all packages RUN pip3 install conan && conan profile detect # BEGIN X-SERVER IN DOCKER CONTAINER -------------------------------- # Setup mesa drivers #RUN add-apt-repository ppa:kisak/kisak-mesa # This will switch to the latest Mesa version available RUN apt update && apt install -y \ libegl-mesa0 \ libegl1-mesa \ libegl1-mesa-dev \ libgl1-mesa-dev \ libglu1-mesa \ libglu1-mesa-dev \ libgl1-mesa-dri \ libgl1-mesa-glx \ libglapi-mesa \ libgles2-mesa \ libgles2-mesa-dev \ libglw1-mesa \ libglw1-mesa-dev \ libglx-mesa0 \ libosmesa6 \ libosmesa6-dev \ libfreetype6-dev \ mesa-utils \ xdotool \ mesa-common-dev \ libglib2.0-0 # Setup xvfb RUN DEBIAN_FRONTEND=noninteractive \ apt install -y \ xvfb \ x11-xkb-utils \ xfonts-100dpi \ xfonts-75dpi \ xfonts-scalable \ xfonts-cyrillic \ xorg \ openbox \ xserver-xorg-core # Setup our environment variables. ENV XVFB_WHD="1920x1080x24"\ DISPLAY=":99" \ LIBGL_DEBUG="verbose" \ LIBGL_ALWAYS_SOFTWARE="1" \ MESA_DEBUG="1" \ GALLIUM_DRIVER="llvmpipe" \ LP_NO_RAST="false" \ LP_DEBUG="" \ LP_PERF="" \ LP_NUM_THREADS="" # Copy our entrypoint into the container. COPY ./entrypoint.sh / RUN chmod +x /entrypoint.sh # Set the default command. ENTRYPOINT ["/entrypoint.sh"] # END X-SERVER IN DOCKER CONTAINER -------------------------------- ADD * /opt/glcrash/ RUN cd /opt/glcrash && mkdir build && cd build \ && conan install .. --build missing --output-folder=. -s build_type=Debug -c tools.system.package_manager:mode=install \ && cmake .. -DCMAKE_TOOLCHAIN_FILE=build/Debug/generators/conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Debug \ && cmake --build . [/code] entrypoint.sh: [code]#!/bin/sh if [ $# -eq 0 ]; then echo "No command was given to run, exiting." exit 1 else # Start Xvfb echo "Starting Xvfb." Xvfb ${DISPLAY} -ac -screen 0 "$XVFB_WHD" -nolisten tcp & Xvfb_pid="$!" echo -n "Waiting for Xvfb to be ready... " while ! xdpyinfo -display ${DISPLAY} > /dev/null 2>&1; do sleep 0.1 done echo "done." "$@" returnValue=$? echo -n "Stopping Xvfb... " while kill -n 0 $Xvfb_pid > /dev/null 2>&1; do wait done echo "done." #echo "Removing Xvfb temporary files." rm -rf /tmp/.X* exit $returnValue fi [/code] main.cpp [code]#include #include #include int main(int argc, char** argv) { if (!glfwInit()) { std::cout Подробнее здесь: [url]https://stackoverflow.com/questions/78299170/segfault-in-glgeterror-when-running-with-mesa-software-renderer-under-docker[/url]
Что не так с моим рендерером сетки в OpenTK? [закрыто]
Anonymous »
14 июл 2024, 14:06 » в форуме
C#
Спасибо за то, что следите за тем фактом, что лица могут храниться как три или четырехугольники, и вместо того, чтобы позволить мне получить ответ от того, кто знал это, через 5 минут, мне пришлось потратить 2 дня на изучение этого, вам следует...
0 Ответы
15 Просмотры
Последнее сообщение Anonymous
14 июл 2024, 14:06
0 Ответы
23 Просмотры
Последнее сообщение Anonymous
05 окт 2024, 04:01
0 Ответы
18 Просмотры
Последнее сообщение Anonymous
07 ноя 2024, 06:48
Как взаимодействовать с рендерером с новой кнопки?
Anonymous »
24 июл 2025, 14:55 » в форуме
Javascript
Если я добавляю новые элементы управления игроку (Abcjsoff, Transpose, Metronome), что поместить в «Onclick», чтобы получить доступ к Abcjs-audio или рендереру? Test U
ошибка: u не определено
или:
Test play
ошибка abcjs не определено...
0 Ответы
5 Просмотры
Последнее сообщение Anonymous
24 июл 2025, 14:55
0 Ответы
75 Просмотры
Последнее сообщение Anonymous
20 май 2024, 17:42